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