Home | Symfony2Doc »コンポーネント »ClassLoaderコンポーネント

このページのコンテンツ

前のドキュメント

Symfony2 Componentsをインストールして使う方法

次のドキュメント

Console

ソース



クイックリンク


コメントリスト

Powered by Disqus

ご質問や翻訳不備等お気軽にコメントください。


ご注意

Symfony2日本語翻訳ドキュメントは内容が古くなっております。公式サイトの英語ドキュメントを参照してください。

ClassLoaderコンポーネント

ClassLoaderコンポーネントは、標準PHP規約に従っているプロジェクトのクラスを自動的に読みこみます。

未定のクラスを使用すると常に、PHP は、クラスのオートローディングのメカニズムを使用して、クラスが定義されているファイルをロードしようとします。Symfony2 は、”universal autoloader” を提供しており、次のいずれかの慣習に従って実装されたファイルからクラスを読み込むことができます。

  • PHP 5.3 のネームスペースとクラス名による、技術的な相互運用標準(PSR-0標準)
  • PEAR のクラスの命名規則

あなたのクラスとサードパーティのライブラリが、この標準に従っていれば、Symfony2 のオートローダーのみで全て解決できます。

インストール

ClassLoaderコンポーネントをインストールする方法は何通りもあります。

  • 公式Gitレポジトリ (https://github.com/symfony/ClassLoader)
  • PEARコマンドでインストール ( pear.symfony.com/ClassLoader)
  • Composerを使ってインストール (Packagistの symfony/class-loader)

使用方法

New in version 2.1: useIncludePath メソッドは Symfony2.1 で追加されます。

UniversalClassLoader オートローダーの登録は、簡単です

require_once '/path/to/src/Symfony/Component/ClassLoader/UniversalClassLoader.php';

use Symfony\Component\ClassLoader\UniversalClassLoader;

$loader = new UniversalClassLoader();

// You can search the include_path as a last resort.
$loader->useIncludePath(true);

$loader->register();

ApcUniversalClassLoader クラスを登録して、APC を使ってメモリ上にクラスパスをキャッシュすることで、パフォーマンスを少し改善できます。

::

require_once ‘/path/to/src/Symfony/Component/ClassLoader/UniversalClassLoader.php’; require_once ‘/path/to/src/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php’;

use SymfonyComponentClassLoaderApcUniversalClassLoader;

$loader = new ApcUniversalClassLoader(‘apc.prefix.’); $loader->register();

オートロードすべきライブラリがある際には、オートローダーは便利です。

Note

Symfony2 のアプリケーションでは、オートローダーは自動的に登録されます。app/autoload.php を参照してください。

ネームスペースを使用しているクラスをオートロードするには registerNamespace() or registerNamespace() メソッドを使用する もしくは、 registerNamespaces() メソッドを使用してください。

$loader->registerNamespace('Symfony', __DIR__.'/vendor/symfony/src');

$loader->registerNamespaces(array(
    'Symfony' => __DIR__.'/../vendor/symfony/src',
    'Monolog' => __DIR__.'/../vendor/monolog/src',
));

$loader->register();

PEAR の命名規則に従ったクラスをオートロードするには registerPrefix() メソッドを使用する もしくは、 registerPrefixes() メソッドを使用してください。

:

$loader->registerPrefix(‘Twig_‘, __DIR__.’/vendor/twig/lib’);

$loader->registerPrefixes(array(
Swift_‘ => __DIR__.’/vendor/swiftmailer/lib/classes’, ‘Twig_‘ => __DIR__.’/vendor/twig/lib’,

));

$loader->register();

Note

PHP の include pathにライブラリのルートパスの登録が必要なライブラリもあります(set_include_path())。

PEAR のクラスのサブネームスペースや下の階層にあるクラスは、大きなプロジェクトのクラスの集合のベンダーとしたディレクトリのリストより見つけることができます。

$loader->registerNamespaces(array(
    'Doctrine\\Common'           => __DIR__.'/vendor/doctrine-common/lib',
    'Doctrine\\DBAL\\Migrations' => __DIR__.'/vendor/doctrine-migrations/lib',
    'Doctrine\\DBAL'             => __DIR__.'/vendor/doctrine-dbal/lib',
    'Doctrine'                   => __DIR__.'/vendor/doctrine/lib',
));

この例では、Doctrine\Common ネームスペース内のクラス、もしくはその下のクラスを使用するには、オートーローダーは、まず doctrine-common ディレクトリの下を探します。見つからなければ、探すのを諦める前に、一番下に設定してある デフォルトの Doctrine ディレクトリを探します。この例においては、登録の順番は、重要です。

blog comments powered by Disqus