PSR-0 自动加载的标准结构 (虽然已不被推荐使用,但composer还在支持)
要点
结构:
\<Vendor Name>\(<Namespace>\)*<Class Name>
第一层级的命名为开发人员的标识
完整的命名空间可包含多个层级
在加载文件的时候,命名空间的分隔符
\
会被DIRECTORY_SEPARATOR
替换类名中的
_
会被DIRECTORY_SEPARATOR
替换,所以_
无任何意义在加载文件的时候,命名空间会补全
.php
后缀命名空间及类命名可以大小写随意
示例:
\Symfony\Core\Request => /path/to/project/lib/vendor/Symfony/Core/Request.php
\namespace\package_name\Class_Name => /path/to/project/lib/vendor/namespace/package_name/Class/Name.php
- 需要注意的是,层级目录会重复vendor和namespace。
加载器的实现示例
或者 中- 编码 (Encoding)
必须使用带BOM的UTF-8
- 对象化 (Objective)
单个PHP文件只负责一件事。定义类、trait、function、常量或者执行一系列的动作。不应该同时包含定义和执行代码。
- 自动加载 (Autoloading)
命名空间和类必须支持PSR-4标准。
- 类名 (Class names)
使用驼峰格式,首字母大写。例:CoffeeBean、TitleCase。
- 常量名 (Constant names)
必须全大写,并以下划线切分单词。例:PROJECT_NAME。
- 方法命名 (Method names)
使用驼峰格式,首字母小写。例:testCode。
PSR-2 严格代码样式
包含PSR-1中的所有要求
首行缩进 (Indentation)
使用4个空格 (鄙人也是这个阵营的)
- 文件和行 (Files and lines)
PHP文件必须使用Unix格式的换行结尾,最后必须多一个空行。必须省略"?>“结尾标签。
单行字符最好不超过80,最多不能大于120.
每行最后不能有多余的空格。
- PHP关键词 (Keywords)
所有PHP的关键词使用小写。true
、 false
、 null
等。
- 命名空间 (Namespaces)
每个命名空间的声明必须跟着一空行。同理在使用use
关键词的时候后边也需要跟一空行。