PSR-0 自动加载标准
来源:互联网 发布:英雄联盟mac国服下载 编辑:程序博客网 时间:2024/06/11 09:59
从2014-10-21日起,PSR-0标准被标记为废弃。推荐使用PSR-4标准作为替换。
加载器(autoloader)必须遵循以下所下要求。
要求:
- 一个完整的命名空间或类必须拥有以下结构
\<Vendor Name>\(<Namespace>\)*<Class Name>
- 每一个命名空间必须有一个顶级的空间名(‘Vendor Name’)
- 每一个命名空间可以拥有多个子命名空间
- 从文件系统中加载时,命名空间中的分隔符(\)将被转化为文件分隔符
- 类名中的每一个
_
(下划线)将被转化为文件分隔符。命名空间中的_
没有特殊含义 - 从文件系统中加载时,完整命名空间或类须以
.php
作为后缀名 开发商名、命名空间和类可以由大小写字母构成(区分大小写)
示例
\Doctrine\Common\IsolatedClassLoader=>/path/to/project/lib/vendor/Doctrine/Common/IsolatedClassLoader.php
\Symfony\Core\Request=>/path/to/project/lib/vendor/Symfony/Core/Request.php
\Zend\Acl=>/path/to/project/lib/vendor/Zend/Acl.php
\Zend\Mail\Message=>/path/to/project/lib/vendor/Zend/Mail/Message.php
命名空间和类中的下划线
\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
这些应当是实现一个自动加载器的最低标准。你可以通过这个可以加载PHP 5.3类的自动加载器来实践下这些标准。
代码实现
<?phpfunction autoload($className){ $className = ltrim($className,'\\');//去除命名空间前面的反斜杠 $fileName = ''; $namespace = ''; if($lastNsPos = strrpos($className,'\\')) {//类名前反斜杠的位置 $namespace = substr($className,0,$lastNsPos);//命名空间 $className = substr($className,$lastNsPos + 1);//类名 $fileName = str_replace('\\',DIRECTORY_SEPARATOR,$namespace). DIRECTORY_SEPARATOR;//文件名} $fileName .= str_replace('_',DIRECTORY_SEPARATOR,$className). '.php';//标准中的要以.php作为后缀,类名的下划线需要转化为文件分隔符 require $fileName;}spl_autoload_register('autoload');
SplClassLoader 实现
下面是一个简单的SplClassLoader 实现,如果你遵循以上标准,你可以通过它来加载类。推荐使用PSR-0标准来加载 PHP 5.3的类
- http://gist.github.com/221634(要翻墙???)
原文 阅读PSR-0
0 0
- PSR-0 自动加载标准
- 【php】自动加载类autoload psr-0与psr-4标准
- 0. PSR-0 --- 自动加载
- php自动加载PSR-0原文翻译,PSR-0中文版
- ZF2自动加载非PSR-0标准库及实例(GeoIP地理位置查询)
- php类的自动加载标准PSR-4官方原文翻译,PSR-4中文版
- PSR-0 类自动加载规范
- PSR-0命名标准
- PSR-0标准
- 4. PSR-4 --- 自动加载
- PSR-4 自动加载规范
- PSR-4自动加载器
- 什么是psr-0,psr-1,psr-2标准
- 「PSR 规范」PSR-4 自动加载规范
- PHP PSR-4 Autoloader 自动加载(中文版)
- PHP PSR-4 Autoloader 自动加载
- PHP PSR-4 Autoloader 自动加载(中文版)
- phpstorm 自动加载psr配置方法
- mysql命名规范
- 二师弟的星际加法
- [Apio2012][Treap]派遣
- HYSBZ 2463
- spark初体验
- PSR-0 自动加载标准
- elgg博客(一)
- IIxirtaMD2ahcraeS.240
- git版本控制管理的学习(三)——提交探索
- Oracle 查询被锁的包package
- BZOJ 1016
- 第72课:Spark SQL UDF和UDAF解密与实战 每天晚上20:00YY频道现场授课频道68917580
- 纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等)
- Java - 值传递和引用传递