PHP最佳实践系列之标准
2017-07-07 21:30
585 查看
PHP-FIG
1).即PHP Framework Interop Group。这个组织发布推荐的规范,而不是强制规范。2).PHP-FIG的使命是实现框架的互操作性。框架的互操作性指的是通过自动加载机制、接口和标准的风格,让框架互相合作。
3).框架之间通过接口、自动加载和标准的编码风格进行合作。
PSR
1).即PHP推荐标准。这是上面的组织制定的推荐规范。例如下面的规范:PSR-1:基本的代码风格
必须把代码PHP代码放在
<?php ?>或
<??>标签中。
编码字符集必须是UTF-8
一个PHP文件可以定义类或者处理数据,但是不能同时做这两件事
遵循自动加载
类命名遵循驼峰式命名
常量大写
方法名称使用第一个字母小写的驼峰式命名
PSR-2:严格的代码风格
贯彻执行PSR-1
使用四个空格缩进
使用UNIX风格换行符
不能使用关闭标签
每一行不能超过120个字符
PHP关键字一律小写
命名空间之后必须跟一个空行
类的定义体起始括号应该在类命后新起一行,类的结束括号也必须新起一行
方法名的括号换行方式和类一直,参数除了第一个参数前面要有空格。
必须声明属性和方法的可见性
可以使用php code sniffer检查代码格式
控制结构关键字后面的起始括号应该和控制结构的关键字写在同一行,结束括号另起一行。例子如下
<?php $gorilla = new \Animals\Gorilla; $libs = new \Animals\StrawNeckedIbis; if ($gorilla->isAwake() === true) { do { $gorilla->beatChest(); } while ($libs->isAsleep() === true); $libs->flyAway(); }
PSR-3:日志记录接口
该规范不是一系列方针,而是一个接口,规定了PHP日志记录器组件可以实现的方法。
PSR-4:自动加载
这个规范描述了一个标准的自动加载策略。自动加载策略是指在运行时按需查找PHP类、接口或者形状,并将其载入PHP解析器,支持PSR-4自动加载器标准的PHP组件和框架使用同一个自动加载器就能找到相关代码,然后将其载入PHP解释器。
该规范的精髓是把命名空间的前缀和系统中的目录对应起来。
自己实现psr-4自动加载器
<?php spl_autoload_register(function ($class) { //这个项目的命名空间前缀 $prefix = 'Foo\\Bar\\'; //这个项目命名空间前缀对应的基目录 $base_dir = __DIR__ . '/src/'; //参数传入的类使用这个命名空间前缀吗? $len = strlen($prefix); if (strncmp($prefix, $class, $len) != 0) { //不使用,交给下一个自动加载器处理 return; } //去掉前缀的类名 $relative_class = substr($class, $len); //把命名空间前换成基目录 //去掉前缀中的类名,把命名空间分隔符换成目录分隔符 //然后在后面加上.php $file = $base_dir . str_replace('\\' , '/', $relative_class) . '.php'; if (file_exists($file)) { require $file; } });
这样的话当我们使用
\Foo\Bar\Baz\Qux这个类的时候,使用SPL注册了上面这个函数之后,PHP就会尝试从
/path/to/project/src/Baz/Qux.php加载这个类。
相关文章推荐
- 最佳实践系列——漫谈 PHP 组件、框架、Composer 那些事
- PHP相关系列 - Rolling cURL: PHP并发最佳实践
- 【Web前端开发最佳实践系列】标准的HTML代码
- 安全编码最佳实践:PHP及编程语言安全
- [最佳实践]基于Struts2+Spring+iBatis的web应用最佳实践系列之一(自动配置篇)
- C#编码标准指导和最佳实践 之 命名规范
- C#编码标准指导和最佳实践 之 项目设置和项目结构
- C#编码标准 - 指导和最佳实践 - Juval Lowy
- 给初学者的30条PHP最佳实践(荒野无灯)
- LINQ快速开发设计最佳实践系列
- 深夜闲聊Java与PHP 以及架构设计思想与最佳实践
- IBM Cognos BI 最佳实践系列 网站地址
- C#编码标准-指导和最佳实践(1)--命名规范
- 阮一峰译:PHP最佳实践
- CSS书写标准及最佳实践
- SCSF 系列:Smart Client Software Factory 中 MVP 模式最佳实践
- C#编码标准 - 指导和最佳实践 - Juval Lowy
- C#编码标准 - 指导和最佳实践 - Juval Lowy
- JBossTools实践系列:开发标准的JMX MBean服务
- Android SDK开发指南(翻译)系列一:最佳实践(二)-- 反应速度设计