我已经在我的内部设置了一个非常基本的自动加载器index.php
来获取一个命名空间类hello.php
。我的开发环境是Ubuntu 12.04。
我为什么要这样做?我正在尝试遵守PSR-1和PSR-2 编码标准,其中包括:
类名必须在 StudlyCaps 中声明
命名空间为 /Vendor/Class(注意:大写)
以下是我在更改大写字母之前有效的结构和代码。
文件夹结构
- web
-- index.php
-- core
--- hello.php
自动装载机
在 index.php 中,我有我的自动加载器:
set_include_path(__DIR__);
spl_autoload_extensions('.php,.class.php');
spl_autoload_register();
类文件
在核心文件夹中,我有 hello.php
namespace core;
class hello {
public function __construct() {
echo 'Constructed!';
}
}
有效的代码
如果我$obj = new \core\hello();
在我的中运行index.php
,我会返回“Constructed!”。伟大的!
不起作用的
将我的核心文件夹重命名为“Core”——注意大写 C,hello.php
以及namespace Core;
.
现在让我们再试一次$obj = new \Core\hello();
Fatal error: Class 'Core\hello' not found in ...
那么请告诉我,为什么我不能使用大写字母来符合 PSR 标准?我究竟做错了什么?