PSR-4 规范实例讲解 -- php 自动加载
参考
参考文档:https://www.kancloud.cn/thinkphp/php-fig-psr/3144
参考实例:https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader-examples.md
基本代码规范
PHP代码文件必须以
<?php或<?=标签开始;PHP代码文件必须以
不带BOM的 UTF-8编码;PHP代码中应该只定义类、函数、常量等声明,或其他会产生
从属效应的操作(如:生成文件输出以及修改.ini配置文件等),二者只能选其一;类的命名必须遵循
StudlyCaps大写开头的驼峰命名规范;类中的常量所有字母都必须大写,单词间用下划线分隔;
方法名称必须符合
camelCase式的小写开头驼峰命名规范。
代码风格规范
代码必须遵循 PSR-1 中的编码规范 。
代码必须使用4个空格符而不是 tab键 进行缩进。
每行的字符数应该软性保持在80个之内, 理论上一定不可多于120个, 但一定不能有硬性限制。
每个
namespace命名空间声明语句和use声明语句块后面,必须插入一个空白行。类的开始花括号(
{)必须写在函数声明后自成一行,结束花括号(})也必须写在函数主体后自成一行。方法的开始花括号(
{)必须写在函数声明后自成一行,结束花括号(})也必须写在函数主体后自成一行。类的属性和方法必须添加访问修饰符(
private、protected以及public),abstract以及final必须声明在访问修饰符之前,而static必须声明在访问修饰符之后。控制结构的关键字后必须要有一个空格符,而调用方法或函数时则一定不能有。
控制结构的开始花括号(
{)必须写在声明的同一行,而结束花括号(})必须写在主体后自成一行。控制结构的开始左括号后和结束右括号前,都一定不能有空格符。
Autoloader
- 此处的“类”泛指所有的class类、接口、traits可复用代码块以及其它类似结构。
一个完整的类名需具有以下结构
\<命名空间>(\<子命名空间>)*\<类名>
完整的类名必须要有一个顶级命名空间,被称为 "vendor namespace";
完整的类名可以有一个或多个子命名空间;
完整的类名必须有一个最终的类名;
完整的类名中任意一部分中的下滑线都是没有特殊含义的;
完整的类名可以由任意大小写字母组成;
所有类名都必须是大小写敏感的。
当根据完整的类名载入相应的文件……
完整的类名中,去掉最前面的命名空间分隔符,前面连续的一个或多个命名空间和子命名空间,作为“命名空间前缀”,其必须与至少一个“文件基目录”相对应;
紧接命名空间前缀后的子命名空间必须与相应的”文件基目录“相匹配,其中的命名空间分隔符将作为目录分隔符。
末尾的类名必须与对应的以
.php为后缀的文件同名。自动加载器(autoloader)的实现一定不能抛出异常、一定不能触发任一级别的错误信息以及不应该有返回值。
3. 例子
下表展示了符合规范完整类名、命名空间前缀和文件基目录所对应的文件路径。
| 完整类名 | 命名空间前缀 | 文件基目录 | 文件路径 |
|---|---|---|---|
| \Acme\Log\Writer\File_Writer | Acme\Log\Writer | ./acme-log-writer/lib/ | ./acme-log-writer/lib/File_Writer.php |
| \Aura\Web\Response\Status | Aura\Web | /path/to/aura-web/src/ | /path/to/aura-web/src/Response/Status.php |
| \Symfony\Core\Request | Symfony\Core | ./vendor/Symfony/Core/ | ./vendor/Symfony/Core/Request.php |
| \Zend\Acl | Zend | /usr/includes/Zend/ | /usr/includes/Zend/Acl.php |
实例:

下载地址:链接:https://pan.baidu.com/s/1skDAxVR 密码:9z23
PSR-4 规范实例讲解 -- php 自动加载的更多相关文章
- PSR-0 规范实例讲解 -- php 自动加载
PSR-0规范 [1]命名空间必须与绝对路径一致 [2]类名首字母必须大写 [3]除去入口文件外,其他“.php”必须只有一个类 [4]php类文件必须自动载入,不采用include等 [5]单一入口 ...
- Laravel 执行流程(一)之自动加载
定位 从 public/index.php 定位到 bootstrap/autoload.php 从 bootstrap/autoload.php 定位到 vendor/autoload.php 从 ...
- composer的自动加载机制(autoload)
composer的出现真是让人们眼前一亮,web开发从此变成了一件很『好玩』的事情,开发一个CMS就像在搭积木,从packagist中取出『积木』搭建在自己的代码中,一点一点搭建出一个属于自己的王国. ...
- composer的autoload来自动加载自己编写的函数库与类库?
1.使用命令composer init生成composer.json文件,并编辑autoload选项内容如下: 其中又包含主要的两个选项: files 和 psr-4. files就是需要compos ...
- 【PSR规范专题(5)】PSR-4 改进后的自动加载规范
本文转自: https://github.com/PizzaLiu/PHP-FIG/blob/master/PSR-4-autoloader-cn.md 关键词 "必须"(&quo ...
- PHP 自动加载规范PSR-4
.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...
- PHP设计模式:类自动载入、PSR-0规范、链式操作、11种面向对象设计模式实现和使用、OOP的基本原则和自动加载配置
一.类自动载入 SPL函数 (standard php librarys) 类自动载入,尽管 __autoload() 函数也能自动加载类和接口,但更建议使用 spl_autoload_registe ...
- php中自动加载类_autoload()和spl_autoload_register()实例详解
一._autoload 自动加载类:当我们实例化一个未定义的类时,就会触此函数.到了php7.1以后版本不支持此函数好像抛弃了 新建一个类文件名字自己随便去:news类在auto.php文件里面去实例 ...
- php自动加载规范 PSR4 (Thinkphp)
PSR4是一种自动加载规范,老版本是PSR0,尽管thinkPHP支持PSR4和PSR0的自动加载方式,但是默认也是优先进行PSR4加载,如果失败,再进行PSR0的加载.本篇文章只会讨论PSR4的加载 ...
随机推荐
- H5 表单标签
33-表单标签3 列表数据 注意点: 1.下拉列表不能输入内容, 但是可以直接在列表中选择内容 2.可以通过给option标签添加一个selected属性来指定列表的默认值 3.可以通过给option ...
- dfs实现数的全排列
代码 #include<bits/stdc++.h> using namespace std; #define ll long long bool vis[15]; int a[15]; ...
- [2017BUAA软工助教]个人项目小结
2017BUAA个人项目小结 一.作业链接 http://www.cnblogs.com/jiel/p/7545780.html 二.评分细则 0.注意事项 按时间完成并提交--正常评分 晚交一周以内 ...
- semantic-ui 图片
1.基础样式 方式一:因为图片是使用img标签,所以直接将class加载img标签中即可.不过要注意的是,class中要指定是ui image. 方式二:使用一个span或者div将img标签包裹,然 ...
- Java Core - JVM运行时内存管理
在读正文之前,阅读以下两篇博客学习并理解堆栈.作用域.本地方法的概念. 作用域:https://www.cnblogs.com/AlanLee/p/6627949.html 操作数栈:https:// ...
- node笔记
基础入门可参考: <一起学 Node.js>—— https://github.com/nswbmw/N-blog 核心模块使用前需要引入 let fs=require('fs'); ...
- Jenkins [Error] at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:192)
Deploying /root/.jenkins/workspace/zgg-crm-pre/target/crm.war to container Tomcat 7.x Remote with co ...
- asp.net mvc area实现多级controller和多级view
经常需要描述这样的项目结构 ~:. //web根目录├─.admin //管理员功能目录│ └─index.html //管理员目录页面├─.user / ...
- js 翻牌活动效果
直接上代码 html: <div class="index_main"> <ul class="index_card"> <li ...
- [GS]uuid-ossp
uuid-ossp 原贴地址:http://postgres.cn/docs/9.6/uuid-ossp.html 关于 OSSP的含义 uuid-ossp模块提供函数使用几种标准算法之一产生通用唯一 ...