0

Symfony2 プロジェクトに PSR-0 対応の外部ライブラリを含める方法を把握しようとしています。「The PSR-0 Class Loader」ページ (ここ: http://symfony.com/doc/master/components/class_loader/class_loader.html ")。

どのファイルが編集されていますか? それが app/autoloader.php である場合、私のものは提示されているものとは異なって見えます:

use Doctrine\Common\Annotations\AnnotationRegistry;
use Composer\Autoload\ClassLoader;
/**
 * @var $loader ClassLoader
 */
$loader = require __DIR__.'/../vendor/autoload.php';
AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
return $loader;

返却前にこのコードを含める必要がありますか? それとも、呼び出されている他のファイルにあるはずですか? それでも app/autoload.php の場合は、次のコードを使用しないでください。

// register several namespaces at once
$loader->addPrefixes(array(
    'Symfony' => __DIR__.'/../vendor/symfony/symfony/src',
    'Monolog' => __DIR__.'/../vendor/monolog/monolog/src',
));

代わりに addNamespaces になりますか? このライブラリの宣言に成功したら、どのように使用すればよいでしょうか?

4

1 に答える 1

1

はい、app/autoload.php ファイルが vendor/autoload.php から返された $loader インスタンスをフェッチすることに注意してください。したがって、リンク先のドキュメントでは、新しいインスタンスを明示的に作成する例を示していますが、実際には app/autoload.php を使用して、インスタンスの準備が整い、あなたを待っています。

新しいライブラリ セットの作成に関して、'MyLibrary' という名前の新しいライブラリを作成したいと仮定しましょう。これは、次の後に src ディレクトリに配置されます。

$loader = require __DIR__.'/../vendor/autoload.php';

私は次のように宣言します。

$loader->addPrefix('MyLibrary', __DIR__.'/../src');

今私は:

$ cd src

$ mkdir MyLibrary

$ mkdir MyLibrary/Component

$ mkdir MyLibrary/Component/SomeClasses

$ vim MyLibrary/Component/SomeClasses/MyClass.php

MyClass.php:

<?php

    namespace MyLibrary\Component\SomeClasses;

    class MyClass
    {
        ...
    }

そのクラスを使用したい別のファイルでは、ファイルの先頭で、名前空間宣言の後 (存在する場合):

<?php

...

use MyLibrary\Component\SomeClasses\MyClass;

$myClass = new MyClass();

ただし、これを明示的に行う必要があるとは思いませんでした。Symfony バンドル (実際には特定のタスクを実行するライブラリ) を作成し、そのバンドルにコードを配置するからです。バンドルの作成は十分に文書化されています。

于 2014-06-30T12:39:23.693 に答える