我试图建立一个简单的例子来了解 Symfony 的 ClassLoader 组件和新的PSR-0标准是如何工作的。
首先我创建了 Bar.php:
namespace Acme;
class Bar
{
// Implementation
public static function helloWorld() {
echo "Hello world!";
}
}
然后我创建了一个 autoloader.php(在供应商路径下我有 ClassLoader 组件):
require_once __DIR__.'/vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php';
use Symfony\Component\ClassLoader\UniversalClassLoader;
$loader = new UniversalClassLoader();
$loader->register();
$loader->registerNamespace('Acme', __DIR__);
最后我创建了 Foo.php:
require_once 'autoloader.php';
use Acme;
class Foo extends Bar
{
// Implementation
}
$foo = new Foo();
$foo::helloWorld();
但是当我执行时:
$ php Foo.php
我收到以下错误消息:
PHP 警告:在第 4 行的 Foo.php 中,使用非复合名称“Acme”的 use 语句无效
PHP 致命错误:在第 7 行的 Foo.php 中找不到类 'Bar'
我在这里做错了什么?
更新:
如果不使用namespace Acme
I use namespace Acme\Bar
in Bar.php
,则会收到与上图相同的错误消息。