PHP中PSR-[0-4]规范

关于php规范psr4与psr0命名空间的理解 这几天在看php自动加载相关知识,这里记录一下。 use 命名空间只是防止命名空间的冲突,使用时仍需引入,这一步由自动加载来做。 与psr0不同,psr4不再转换 '_' 为文件分隔符,且 psr4有前缀gainia 以tp5的自动加载为例 Loader.php -> autoload() -> findFile() /** * 查找文件 * @param $class 阅读详情

更好排版:https://www.zybuluo.com/phper/note/65033


PHP是世界上最伟大的语言,这一点是毋庸置疑的吧。哈哈哈哈哈哈 。这个霸气的开头不错!(^__^)

但是正是因为伟大,所以用的人也就多了,人一多,再牛逼再伟大的东西,都会产生问题,逐渐就造成了很多的分歧。每个人的习惯不一样,所以在一些PHP语法上的一些表现也是千差万别,比如这些问题:

function 函数名是否驼峰命名, 
花括号{}是否换行写, 
是该写注释呢还是不写 
变量名是大写还是小写, 
一个php文件中是一个类好还是允许有多个

等等一系列的问题,接踵而至,你说你的这种方式屌,我说你傻逼啊我的才好。所以。各种争执声此起彼伏。

特别是当你去接手上任留下的坑的时候,如果你有自己的规范或者你是处女座,你就会骂死那个狗日的一万遍了,每改一次就会改一遍骂:“麻痹的写的都是什么狗shit烂代码啊”。所以,在PHP程序员的心中一个共有的心愿诞生了:“能不能他妈的大家都遵守同一规范啊”。

好,既然大家都有共同的心声,那么这样一个的公共的规范就出来了,他就是PSR-[0-4]规范,它出来后,大家都觉得挺不错的啊,还蛮符合自己的书写风格的,渐渐的大家都知道了它,也慢慢的接受了它,越来越多的人知道了它,一些大牛的项目都慢慢的遵守了这个规范,然后也一帮菜鸟一看大牛都在用这个规范,我为啥不也尝试着规范一下呢?

所以,渐渐的PSR-[0-4]规范成为了PHP的一个王牌规范,你写PHP就最好必须按照这里面的规范写,全球共享好代码。

PHP-FIG

在说啥是PSR-[0-4]规范的之前,我觉得我们有必要说下它的发明者和规范者:PHP-FIG,它的网站是:www.php-fig.org。就是这个联盟组织发明和创造了PSR-[0-4]规范,膜拜吧,屌丝们!

FIG 是 Framework Interoperability Group(框架可互用性小组)的缩写,由几位开源框架的开发者成立于 2009 年,从那开始也选取了很多其他成员进来,虽然不是 “官方” 组织,但也代表了社区中不小的一块。组织的目的在于:以最低程度的限制,来统一各个项目的编码规范,避免各家自行发展的风格阻碍了程序设计师开发的困扰,于是大伙发明和总结了PSR,PSR是Proposing a Standards Recommendation(提出标准建议)的缩写,截止到目前为止,总共有5套PSR规范,分别是:

PSR-0 (Autoloading Standard) 自动加载标准 
PSR-1 (Basic Coding Standard) 基础编码标准 
PSR-2 (Coding Style Guide) 编码风格向导 
PSR-3 (Logger Interface) 日志接口 
PSR-4 (Improved Autoloading) 自动加载的增强版,可以替换掉PSR-0了。

接下来的篇目,我们会针对这5套,深入了解下。仔细学习下受万千PHPer热捧的这5套规范到底有啥出众之处。

PSR-0 规范

PRS-0规范是他们出的第1套规范,主要是制定了一些自动加载标准(Autoloading Standard),如果你英文比较好,可以直接看官网的这个:PSR-0,很短。但是如果,你英语烂成狗,那么就继续往下看我的瞎比比讲解吧!

我们打开PSR-0的主页时,发现多了一个警告:

Deprecated - As of 2014-10-21 PSR-0 has been marked as deprecated. PSR-4 is now recommended as an alternative.

英语狗不好的,来,听我翻译:

不推荐使用 - 在2014年10月21日PSR-0已被标记为过时。PSR-4现在推荐作为替代。

那么也就是说PSR-0已!经!过!时!了!,别哭,PHP代码狗。虽说已经过时,但是我们也可以看看嘛,这不影响我们的学习,好了。废话不说了,开始吧:

PSR-0强制性要求几点:

  1. 一个完全合格的namespace和class必须符合这样的结构:“\< Vendor Name>(< Namespace>)*< Class Name>”
  2. 每个namespace必须有一个顶层的namespace("Vendor Name"提供者名字)
  3. 每个namespace可以有多个子namespace
  4. 当从文件系统中加载时,每个namespace的分隔符(/)要转换成 DIRECTORY_SEPARATOR(操作系统路径分隔符)
  5. 在类名中,每个下划线(_)符号要转换成DIRECTORY_SEPARATOR(操作系统路径分隔符)。在namespace中,下划线(_)符号是没有(特殊)意义的。
  6. 当从文件系统中载入时,合格的namespace和class一定是以 .php 结尾的
  7. verdor name,namespaces,class名可以由大小写字母组合而成(大小写敏感的)

是不是有点看不懂啊。什么namespace啊,什么autoloading啊。所以,如果你对命名空间还不是特别懂的话,可以google下namespace 和 自动加载相关的php知识。或者看下一篇,我专门来讲讲他们:namespace 和 autoloading

好,我们接着一条条举例来分析下:

第1条

比如我的文件 /Doctrine/Common/IsolatedClassLoader.php 这样子的一个类文件,那么你的namespace命名就必须声明称这样:

声明:namespace  \Doctrine\Common\
调用:\Doctrine\Common\IsolatedClassLoader

其中,Doctrine 表示一个模块目录 Vendor name, common就是namesapce, IsolatedClassLoader是class name。这样一看就知道这个文件的目录层次,一目了然。

再比如:/path/to/project/lib/vendor/Symfony/Core/Request.php 文件:

声明:namespace \Symfony\Core
调用:\Symfony\Core\Request

第2,3条

namespace \Zend\Acl => /path/to/project/lib/vendor/Zend/Acl.php
namespace \Zend\Mail\Message => /path/to/project/lib/vendor/Zend/Mail/Message.php

必须有一个顶级的zend的namespace, zend 下面可以有message子命名空间。

第4条

看这个例子,我们需要new 一个这样的类

new \Symfony\Core\Request

那么我再加载这个类文件时候,就要将分隔符\ 转换成 目录,也就是去 Vendor -> Symfony->Core->Request.php 一层层的目录找到这个文件。其实也就是和第1,2,3是反过来的对应关系。

第5条

第5条是说namespace命名中的这个 _符号 没有任何用处,就是用来表示目录分隔符的,但是注意在PRS-4中已经取消了这个_ ,那么我们还是看一下,这个过时的规定是怎么样的:

\namespace\package\Class_Name => /path/to/project/lib/vendor/namespace/package/Class/Name.php

\namespace\package_name\Class_Name => /path/to/project/lib/vendor/namespace/package_name/Class/Name.php

以上2个namespace中的_ 其实是目录分隔符。并不是class name就是那样的。现在PSR-4出来后,确实觉得这样的规定有点不好。怪怪的。

第6条

第6条不用多说。既然你用php,文件名当然是得用.php 后缀结尾。这个规定的原因,我大致猜一下,估计是有人用 .php3 后缀的。好吧。这个是个神话了。因为在apache的配置文件中是允许的:

<IfModule dir_module>
    DirectoryIndex index.php index.php3 index.html index.htm
</IfModule>

所以,老老实实的用.php作为后缀名吧。

第7条

文件大小写的问题,这个其实是很重要的。因为Linux系统下是区分文件名和目录名大小写的,而在Windows下是不区分的。所以就会经常出现问题,比如:

namespace  \Doctrine\Common\IsolatedClassLoader

在Linux下就去严格按照大小写去找目录和文件了。但是如果你在windows下开发,全是小写也不会报错,你一发布到Linux上就悲剧了,提示找不到文件。所以,大小写太重要了。

PSR-1 规范

还是那句话,如果你英文比较好,可以直接看官网的这个:PSR-1,也不长,基本能看懂。但是如果你英语烂成狗,那么还是请继续往下看我的瞎比比!

  1. PHP源文件必须只使用 <?php 和 <?= 这两种标签。
  2. 源文件中php代码的编码格式必须是不带字节顺序标记(BOM)的UTF-8。
  3. 一个源文件建议只用来做声明(类(class),函数(function),常量(constant)等)或者只用来做一些引起副作用的操作(例如:输出信息,修改.ini配置等),但不建议同时做这两件事。
  4. 命名空间(namespace)和类(class) 必须遵守PSR-0标准。
  5. 类名(class name) 必须使用骆驼式(StudlyCaps)写法 (注:驼峰式(cameCase)的一种变种,后文将直接用StudlyCaps表示)。
  6. 类(class)中的常量必须只由大写字母和下划线(_)组成。
  7. 方法名(method name) 必须使用驼峰式(cameCase)写法。

好,就是上面的基本7大点,有些很简单,就不过多说明,第3点需要仔细说下。

第1条

这个基本都是大家都懂得的,PHP代码必须只使用长标签(<?php ?>)或者短输出式标签(<?= ?>);而不要使用其他标签。

之所以说这个,是因为我们在学习PHP的时候,一般的教材都告诉我们说,php有4种标记风格:php的4种标记风格 所以,很多人就乱来了。瞎鸡巴写。特别是asp风格的兼职是折磨好么!!!

第2条

这个不多说,保存的时候格式必须是无BOM的UTF-8格式,否则会出现很多无法解释的千奇百怪的问题。千万别傻逼的用windows下的text文本编辑器保存文件啊

第3条

这个通俗的说呢。就是别把一些输出和修改的操作(副作用) 和 类文件混合在一起,专注一点,这个文件专门来声明class, 那个文件专门来修改配置文件,别混在一起写:

所以,以下的这个文件是有问题的,最好不要这样:

  1. // 副作用:修改了ini配置
  2. ini_set('error_reporting', E_ALL);

  3. // 副作用:载入了文件
  4. include "file.php";

  5. // 副作用:产生了输出
  6. echo "<html>\n";

  7. // 声明 function
  8. function foo()
  9. {
  10. // 函数体
  11. }

你看上面看起来多乱啊。最好全部分开来写:

  1. namespace Lib;

  2. class Name
  3. {
  4. public function __construct()
  5. {
  6. echo __NAMESPACE__ . "<br>";
  7. }

  8. public static function test()
  9. {
  10. echo __NAMESPACE__ . ' static function test <br>';
  11. }
  12. }

修改ini:

  1. ini_set('error_reporting', E_ALL);

require 文件:

  1. require DIR . '/loading.php';

  2. spl_autoload_register("\\AutoLoading\\loading::autoload");

你看是不是整齐好看多了。当然这个是很难约束的。自己仔细划分。

第4条

第4条是约束namespace的,前面已经说过,不多说。值得说的是名字要是驼峰方式来

第5条

class name必须要用驼峰方式写,驼峰又分小驼峰和大驼峰(小驼峰是第一个字母是小写)这样写看着舒服也比较规范,不做要求,反正是驼峰就可以了。我喜欢用小驼峰:


  1. class getUserInfo
  2. {

  3. }

第6条

是规定类中的常量名(const)声明必须要全部大小,如果有多个单词,就用_分开:


  1. class getUserInfo
  2. {
  3. //全部大写
  4. const NAME = 'phper';

  5. //用_隔开
  6. const HOUSE_INFO = '已经大上海买房'

  7. public function getUserName()
  8. {
  9. //
  10. }
  11. }

第7条

method name必须要用驼峰方式写,大小驼峰都可以,不做要求,我喜欢用小驼峰:


  1. class getUserInfo
  2. {
  3. public function getUserName()
  4. {
  5. //
  6. }
  7. }

PRSR-2 规范

PSR-2 规范的官网链接在此:PSR-2 这一规范主要是约束代码风格的,可是说是所有里面最关键最重要的,也是需要好好规范和共同遵守的。

我们一个个来看下,只能我大略的写一些比较重要的,或者说平时用的最多的。

1. 源文件

  1. 文件末尾必须空一行。
  2. 必须使用Unix LF(换行)作为行结束符。
  3. 纯PHP代码源文件的关闭标签?>必须省略。

第3点其实是蛮重要的,我之前还老写闭合,现在不写了。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图。

2. 缩进

必须使用4个空格来缩进,不能使用Tab键。当然你如果把Tab在编辑器里手动设置为4个空格也可以。这样的目的是因为:每个人的机器上的Tab键都不一样,有些是4个空格,有些是8个空格,在你的机器上看着很爽的代码,在别人机器上了就各种恶心了。所以,统一搞成4个空格,不管在哪里打开都是美观的。

3. 行

一行推荐的是最多写80个字符,多于这个字符就应该换行了,一般的编辑器是可以设置的。

4. 关键字和 True/False/Null

php的关键字,必须小写,boolean值:true,false,null 也必须小写

下面是php的keyword,必须小写。

'__halt_compiler', 'abstract', 'and', 'array', 'as', 'break', 'callable', 'case', 'catch', 'class', 'clone', 'const', 'continue', 'declare', 'default', 'die', 'do', 'echo', 'else', 'elseif', 'empty', 'enddeclare', 'endfor', 'endforeach', 'endif', 'endswitch', 'endwhile', 'eval', 'exit', 'extends', 'final', 'for', 'foreach', 'function', 'global', 'goto', 'if', 'implements', 'include', 'include_once', 'instanceof', 'insteadof', 'interface', 'isset', 'list', 'namespace', 'new', 'or', 'print', 'private', 'protected', 'public', 'require', 'require_once', 'return', 'static', 'switch', 'throw', 'trait', 'try', 'unset', 'use', 'var', 'while', 'xor'

5. 命名空间(Namespace)和导入(Use)声明

先简单文字描述下:

  1. 命名空间(namespace)的声明后面必须有一行空行。
  2. 所有的导入(use)声明必须放在命名空间(namespace)声明的下面。
  3. 一句声明中,必须只有一个导入(use)关键字。
  4. 在导入(use)声明代码块后面必须有一行空行。

用代码来说明下:

  1. <?php
  2. namespace Lib\Databases; //下面必须空格一行

  3. class Mysql {

  4. }

namespace下空一行,才能使用use,再空一行,才能声明class

  1. <?php
  2. namespace Lib\Databases; // 下面必须空格一行

  3. use FooInterface; //use 必须在namespace 后面声明
  4. use BarClass as Bar;
  5. use OtherVendor\OtherPackage\BazClass; // 下面必须空格一行

  6. class Mysql
  7. {

  8. }

6. 类(class),属性(property)和方法(method)

1 . 继承(extends) 和实现(implement) 必须和 class name 写在一行,切花括号要换行写。

  1. <?php
  2. namespace Lib\Databaes;

  3. class Mysql extends ParentClass implements \PDO, \DB // 写一行
  4. { //换行写{

  5. }

2 . 属性(property)必须声明其可见性,到底是 public 还是protected还是 private,不能省略,也不能使用var, var是php老版本中的什么方式,等用于public.

  1. <?php
  2. namespace Lib\Databaes;

  3. class Mysql extends ParentClass implements \PDO, \DB // 写一行
  4. {
  5. public $foo = null;
  6. private $name = 'yangyi';
  7. protected $age = '17';
  8. }

3 . 方法(method) ,必须 声明其可见性,到底是 public 还是protected还是 private,不能省略。并且,花括号{必须换行写。如果有多个参数,第一个参数后紧接, ,再加个空格,且函数name和( 之间必须要有个空格:function_name ($par, $par2, $pa3), 如果参数有默认值,也要用左右空格分开。

  1. <?php
  2. namespace Lib\Databaes;

  3. class Mysql extends ParentClass implements \PDO, \DB // 写一行
  4. {
  5. public getInfo ($name, $age, $gender = 1) //函数名getInfo和(之间有个空格,参数之间也要有空格。默认参数也要左右都有空格
  6. { //必须换行写{

  7. }
  8. }

4 . 当用到抽象(abstract)和终结(final)来做类声明时,它们必须放在可见性声明 (public 还是protected还是private)的前面。而当用到静态(static)来做类声明时,则必须放在可见性声明的后面。

直接上代码:

  1. <?php
  2. namespace Vendor\Package;

  3. abstract class ClassName
  4. {
  5. protected static $foo; //static放后面

  6. abstract protected function zim(); //abstract放前面

  7. final public static function bar() //final放前面,static放最后。
  8. {
  9. // 方法主体部分
  10. }
  11. }

7.控制结构

控制接口,就是if else while switch等。这一类的写法规范也是经常容易出现问题的,也要规范一下。

1 . if,elseif,else写法,直接上规范代码吧:

  1. <?php
  2. if ($expr1) { //左右空格
  3. // if body
  4. } elseif ($expr2) { //elesif 连着写
  5. // elseif body
  6. } else {
  7. // else body;
  8. }

2 . switch,case 注意左右空格和换行,还是直接上规范代码:

  1. <?php
  2. switch ($expr) { //左右空格
  3. case 0:
  4. echo 'First case, with a break'; //对其
  5. break; //换行写break ,也对其。
  6. case 1:
  7. echo 'Second case, which falls through';
  8. // no break
  9. case 2:
  10. case 3:
  11. case 4:
  12. echo 'Third case, return instead of break';
  13. return;
  14. default:
  15. echo 'Default case';
  16. break;
  17. }

3 . while,do while 的写法也是类似,要左右空格,上代码:

  1. <?php
  2. while ($expr) { //左右空格
  3. // structure body
  4. }

  5. do {
  6. // structure body; //左右空格
  7. } while ($expr);

4 . for的写法

  1. <?php
  2. for ($i = 0; $i < 10; $i++) { //注意几个参数之间的空格
  3. // for body
  4. }

5 . foreach的写法

  1. <?php
  2. foreach ($iterable as $key => $value) { //还是空格问题
  3. // foreach body
  4. }

6 . try catch的写法

  1. <?php
  2. try {
  3. // try body
  4. } catch (FirstExceptionType $e) { //同样也是注意空格。
  5. // catch body
  6. } catch (OtherExceptionType $e) {
  7. // catch body
  8. }

基本用到的就是这些了,其他什么闭包啥的用的不多就不过多的累述了。

PSR-3 规范

PSR-3规范主要是来规范日志接口(Logger Interface)的,老实讲,其实平常接触的不是特别多,所以就不说了,可以去看官网的PSR-3

PSR-4 规范

PSR-4规范是刚出没多久的一条新的规范,它也是规范 自动加载(autoload)的,是对PSR-0的修改,属于补充规范,

我简单说下,主要是以下几点: 
1. 废除了PSR-0中_就是目录分割符的写法,_下划线在完全限定类名中是没有特殊含义了。 
2. 类文件名要以 .php 结尾。 
3. 类名必须要和对应的文件名要一模一样,大小写也要一模一样。

http://segmentfault.com/a/1190000000380008 
http://www.4wei.cn/archives/1002186 
http://wenku.baidu.com/view/7a21e44b48d7c1c708a14577.html#10002-tsina-1-87843-e29b4784eda5d1f51fb0c2a97a15da08 
https://github.com/hfcorriez/fig-standards

PHP & 理解 autoload 、PSR-0、PSR-4 的因缘并分析 PS0-0 与 PSR-4 的差异到底在哪里 1. include & require 我们知道一个 A.php 文件若想引入 B.php 文件里的类,就需要通过 include / require 的方式将 B.php 引入。 这种方式对小项目来说没啥问题,但对大型项目来说,通常会包含很多公共文件,比如:Foo/Bar/Dog.php,按照传统方式我们在每个所需的地方将这个文件引入即可,但这样会造成如下问题: 每个地方都要引入 Foo/Bar/Dog.php ,操作实在繁琐 代码量增多 重复粘贴容易出现残漏情况 那有没有办法解决这个问题呢 阅读详情

相关推荐

PHP PSR-4与PSR-0规范

在上一篇文章中,介绍了PSR-0和autoload相关的内容。继PSR-0这个PHP自动加载的规范之后,PHP-FIG又推出了一个PSR-4,称为改进的autoload规范。 在此不详谈两者的定义了。在PSR-0中,\Symfony\Core\Request会被转换成文件系统的/path/to/project/lib/vendor/Symfony/Core/Request.php这个路径。PSR

zHHHe的专栏 1万+

PSR-4 标准是干什么的?底层原理是什么?

PSR-4 的目标是提供一种标准的方式来组织和加载 PHP 类文件,使得不同的 PHP 框架和库可以遵循相同的自动加载规范,从而提高代码的可重用性和互操作性。自动加载器是一个函数或类的方法,用于根据类的命名空间加载对应的类文件。类文件的加载:当代码中使用一个尚未加载的类时,自动加载机制会根据命名空间和文件路径的映射关系来查找和加载相应的类文件。自动加载机制:自动加载器会根据类文件的路径和命名空间,使用适当的加载策略来加载类文件。底层原理是基于命名空间和文件路径之间的映射关系来实现自动加载。

长风破浪会有时的博客 930

PHP 编码规范 --- PSR规范0-4整理

1. 前言 源码文件必须采用UTF-8编码,且不得有BOM头,某些历史遗留的GBK模块除外。 编码风格没有太多的好坏之分, 最重要的是风格保持一致,编码规范有助于规范我们编码的风格,使代码具有更好的可读性。 每项规范前面的[强制]代表该规范需要强制执行,[建议]代表推荐执行但不强制。 注: 文中所有的变量名前面为了方便没有加”$”, 示意即可。本篇规范是参照百度内部PHP的编码规范制定。 2. 排版 2.1. [强制][PHP002] 程序块要采用缩进风格编写,缩进的空格数建议为4个,单模块内

JineD的博客 8369

PSR-4 自动加载规范

1. 总览 PSR-4 描述了从文件路径中 自动加载 类的规范。 它拥有非常好的兼容性,并且可以在任何自动加载规范中使用,包括 PSR-0。 PSR-4 规范也描述了放置 autoload 文件(就是我们经常引入的 vendor/autoload.php)的位置。 2. 规范 术语「class」指的是类(classes)、接口(interfaces)、特征(traits)和其他类似的结构。 全限定...

Yan 小铁匠 1412

Zenoh:统一数据平面协议,重塑物联网与边缘计算架构

在分布式系统与物联网领域,数据通信与处理常面临协议割裂的挑战。传统方案如MQTT、Kafka、gRPC等,分别针对发布/订阅、流处理和RPC等不同场景,导致架构复杂、集成成本高。其核心问题在于未能统一处理“运动中数据”(Data in Motion)与“静止中数据”(Data at Rest)。Zenoh协议通过创新的“Key-Value”寻址与“Selector”查询语言,将发布/订阅、存储、查询和计算四种核心操作融合进单一协议,构建了统一的抽象层。这种设计实现了极低的协议开销(仅5字节头部)和地理分布式

weixin_29597551的博客 290

RunHarmony报错解析:如何解决data.use与cell.embeddings维度不匹配问题

本文深入解析了单细胞数据分析中RunHarmony函数报错'non-conformable arguments'的根源,即data.use与cell.embeddings矩阵维度不匹配。核心原因是assay(如RNA与integrated)错配导致细胞ID或数量不一致。文章提供了三种解决方案:最推荐显式指定assay.use参数,也可设置project.dim=FALSE或统一数据环境,并给出了最佳实践指南以避免此类错误。

weixin_29093017的博客 575

PHP规范PSR0和PSR4的理解

一、PSR0简介 下文描述了若要使用一个通用的自动加载器(autoloader),你所需要遵守的规范: 一个完全标准的命名空间(namespace)和类(class)的结构是这样的:\<Vendor Name>\(\)*每个命名空间(namespace)都必须有一个顶级的空间名(namespace)("组织名(Vendor Name)")。每个命名空间(namespace)

zhibin的程序日记 3万+

基于三轴加速度计的塑料水管泄漏振动检测技术全解析

在流体力学与结构动力学领域,管道振动分析是评估系统健康状态的关键技术。其基本原理在于,当管道内流体状态发生异常(如泄漏)时,会引发管壁产生特定的机械振动信号。这项技术的核心价值在于实现了对管道系统的非侵入式、在线监测,能够提前预警潜在故障,避免资源浪费与次生灾害。在智慧城市与智能水务等应用场景中,它对于保障供水管网安全、提升运维效率具有重要意义。本文聚焦于如何利用高精度的三轴加速度计,精准捕捉塑料水管因泄漏产生的微弱振动,并通过信号处理与机器学习算法,构建一套从数据采集到泄漏识别与定位的完整工程解决方案。

weixin_32239523的博客 407

php psr4 编码规范,PSR规范0-4整理

PSR规范psr规范引言: PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。这些规范的目的是:通过框架作者或者框架的代表之间讨论,以最低程度的限制,制定一个协作标准,各个框架遵循统一的编码规范,避免各家自行发展的风格阻碍了 PHP 的发展,解决这个程序设计师由来已久的困扰。截止到笔者文章psr在...

weixin_30444625的博客 556

Scratch 3.0角色控制避坑指南:为什么你的键盘移动总卡顿?

本文深入剖析了Scratch 3.0中角色移动卡顿的根本原因,指出依赖`当按下`事件积木的局限性。通过对比分析,推荐采用`重复执行`结合`如果<键被按下?>`的循环控制方案,并引入速度变量模拟惯性,从而实现流畅、实时的键盘控制优化,显著提升游戏操作体验。

dd012的博客 1011

【2022网易雷火】游戏研发笔试-AC代码及题目分享

3个小时,4道题目,雷火的题目不在于难,更在于对细节的把控和写大模拟的耐心,花了一个半小时,AC了3.85,直接交卷退了。第一题AC,第二题AC,第三题85%,第四题AC。下面分享一下大致的题意和对应的代码,就不多说了,最近很累(代码可能会有贴错的情况,如有望指正,感谢~)。 T1-小Y抽奖 题意 n行m列个奖励格子,每次抽奖消耗一个道具。每个格子奖励的数量有限且各不相司。每个格子被抽到一次,剩余的奖励数量-1。剩余的奖励数量为0时,则不会再抽到该格子。小Y抽了好多次,但一直没有抽到最想要的..

米莱虾 9265

PHP PSR0-4规范

PSR 是 PHP Standard Recommendation 的简写,即PHP推荐标准。 目前通过的规范有 PSR-0(Autoloading Standard)、PSR-1(Basic Coding Standard)、PSR-2(Coding Style Guide)、PSR-3(Logger Interface)、PSR-4(Improved Autoloading)。 PSR 不是PHP官方标准,而是从如Zend、Symfony2等知名PHP项目中提炼出来的一系列标准,目前有越来越多的社区项目

lqb3732842的博客 2250

关于海康MVS软件显示速率低与1GB、相机丢包的设置优化

工控机主要应用与视觉检测!相机网线及工控机网口都是千兆的!设置完巨帧数和速度与双工(选择为全双工),显示速度低与1GB,不能够正常工作。C.LA-Properdes-Advanced-将RecerveBuffers更改为2048。E.LAN-属性-电源管理-取消选中允许计算机关闭此设备以保存电源。这种情况均为MVS设置不熟悉,可参照如下设置优化相应端口相机配置。D.局域网-属性-高级-将传输缓冲区更改为20484。B.LAN-属性-高级-将中断记录部分更改为执行。A.关闭采集控制帧速率控制。

米可的博客! 8820

php psr4 编码规范,PHP规范PSR0和PSR4的理解

一、PSR0简介下文描述了若要使用一个通用的自动加载器(autoloader),你所需要遵守的规范:一个完全标准的命名空间(namespace)和类(class)的结构是这样的:()*每个命名空间(namespace)都必须有一个顶级的空间名(namespace)("组织名(Vendor Name)")。每个命名空间(namespace)中可以根据需要使用任意数量的子命名空间(sub-namesp...

weixin_35733586的博客 250

创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—ISP图像处理开发案例

创龙科技研发的 TL3588-EVM 评估板具备强大视频处理能力,可满足多场景视频开发需求。为助力开发者快速上手,本文整理 7 个实用视频开发案例,涵盖从采集到显示的全流程,详细说明各案例的硬件连接、参数配置与代码解析,帮助开发者高效实现评估板视频相关功能开发与调试。

创龙,嵌入式一体化解决方案商 206

【参数配置】OpenClaw 的破解之道(Doom Loop)

本文深入解析了OpenClaw中的Doom Loop(死循环)问题及其应对策略。主要内容包括: Agent Loop的核心概念:基于ReAct范式,OpenClaw通过"思考-行动-观察"循环执行任务,但可能陷入无进展的死循环。 Doom Loop现象:Agent持续执行但任务进度为零,常见于四种工具调用场景:相同调用重复执行、调用不存在工具、轮询工具卡死、操作交替振荡。 OpenClaw的防御机制: 第一道防线:重试端断路器,通过上下文压缩熔断(最多3次)和总重试次数熔断(32-160次)防止无限重试。

海兰 4039

php psr-4与psr-0规范,PHP PSR-4与PSR-0规范

在上一篇文章中,介绍了PSR-0和autoload相关的内容。继PSR-0这个PHP autoloading的规范之后,PHP-FIG又推出了PSR-4,称为改进的autoloading规范。在PSR-0中,\Symfony\Core\Request会被转换成文件系统的/path/to/project/lib/vendor/Symfony/Core/Request.php这个路径。PSR-4与PS...

weixin_39746869的博客 215

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

php psr 编码规范_PHP规范PSR0和PSR4的理解

一、PSR0简介下文描述了若要使用一个通用的自动加载器(autoloader),你所需要遵守的规范:一个完全标准的命名空间(namespace)和类(class)的结构是这样的:\\(\)*每个命名空间(namespace)都必须有一个顶级的空间名(namespace)("组织名(Vendor Name)")。每个命名空间(namespace)中可以根据需要使用任意数量的子命名空间(su...

weixin_34621309的博客 304

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

php中PSR-[0-4]代码规范学习记录

php中PSR-[0-4]代码规范学习记录 1. PSR是什么? PSR是一套代码编写规范,用于约束代码风格。以前没有规范的时候大家都是按照自己的习惯来书写代码,但每个人风格不一样,你的代码在别人看来就是很不爽。而且会导致许多问题: function 函数名是否驼峰命名, 花括号{}是否换行写, 是该写注释呢还是不写 变量名是大写还是小写, 一个php文件中是一个类好还是允许有多个 所以PSR-[0-4]规范就应运而生,大家都共同遵守,就没有风格差异了。 PSR是由PHP-FIG这个组织发明的,FIG 是

大智若愚的博客 444

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

PHP代码规范 PSR(0-4)

PHP-FIG 在说啥是PSR-[0-4]规范的之前,我觉得我们有必要说下它的发明者和规范者:PHP-FIG,它的网站是:www.php-fig.org。就是这个联盟组织发明和创造了PSR-[0-4]规范,膜拜吧,屌丝们! FIG 是 Framework Interoperability Group(框架可互用性小组)的缩写,由几位开源框架的开发者成立于 2009 年,从那开始也选取了很多其他...

root_miss的博客 605

php psr4和自动加载,php 自动加载规范 psr0 psr4 详解

1.psr0 这是个啥东西呢,这是一个标准。一个实现自动加载类的标准。在这之前你需要先了解__autoload 和spl_autoload_register这两个方法。为什么要实现这个标准呢?如果整个项目是自己写的不需要任何其他人的代码,那好。你想怎么定义这个标准就怎么定义。可是当你需要调用第三方的类库的时候。就会出现问题,因为可能你们两个自动加载类的标准不同所以,自动加载类是需要一个标准的。介...

weixin_29391349的博客 1240
上一篇: 静态内容实现缓存的七种不同方法
下一篇: ThinkPHP import 类库导入 include PHP文件
chenrui310
博客等级 码龄15年 165粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值