跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

PSR-0 自动加载标准

从2014-10-21日起,psr-0标准被标记为废弃。推荐使用psr-4标准作为替换。 加载器(autoloader)必须遵循以下所下要求。 要求: 一个完整的命名空间或类必须拥有以下结构
()*
每一个命名空间必须有一个顶级的空间名(‘Vendor Name’) 每一个命名空间可以拥有多个子命名空间 从文件系统中加载时,命名空间中的分隔符()将被转化为文件分隔符 类名中的每一个
_
(下划线)将被转化为文件分隔符。命名空间中的
_
没有特殊含义 从文件系统中加载时,完整命名空间或类须以
.php
作为后缀名 开发商名、命名空间和类可以由大小写字母构成(区分大小写) 示例
DoctrineCommonIsolatedClassLoader=>/path/to/project/lib/vendor/Doctrine/Common/IsolatedClassLoader.php
SymfonyCoreRequest=>/path/to/project/lib/vendor/Symfony/Core/Request.php
ZendAcl=>/path/to/project/lib/vendor/Zend/Acl.php
ZendMailMessage=>/path/to/project/lib/vendor/Zend/Mail/Message.php
命名空间和类中的下划线 PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载
amespacepackageClass_Name=>/path/to/project/lib/vendor/namespace/package/Class/Name.php
amespacepackage_nameClass_Name=>/path/to/project/lib/vendor/namespace/package_name/Class/Name.php
这些应当是实现一个自动加载器的最低标准。你可以通过这个可以加载PHP 5.3类的自动加载器来实践下这些标准。 代码实现
functionautoload($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 ').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); }); 以上就介绍了PSR-0 自动加载标准,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

相关文章