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警告:非複合名「Acme」のuseステートメントは、4行目のFoo.phpでは効果がありません。
PHPの致命的なエラー:7行目のFoo.phpにクラス「Bar」が見つかりません
私はここで何が間違っているのですか?
更新:
を使用する代わりに、をnamespace Acme
使用するnamespace Acme\Bar
とBar.php
、上記と同じエラーメッセージが表示されます。