PSR标准解读 - PHP进阶 (2)
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。 加载器的实现示例 <?php function 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'; require $fileName; } spl_autoload_register('autoload'); ### PSR-1 基本代码样式 * 标签 (PHP tags) 代码必须包含在<?...