Doctrine 2 プロジェクトに追加された Classloader に少し問題があります。次のような単純なディレクトリ構造があります。
- config (ブートストラップ ファイル)
- html (テンプレート/画像/js などを含むドキュメントルート)
- php
- エンティティ (ドクトリン 2 エンティティ)
- 応答 (一部のトランスポート オブジェクト)
- サービス (API とビジネス ロジックの処理 - Java のセッション Bean など)
各 php サブディレクトリは、独自の名前空間 (ディレクトリの名前と同じ) に属します。
前述のクラスローダーを使用してこれら 3 つの異なるパッケージをロードしたいので、ブートストラップは次のようになります。
$classLoader = new \Doctrine\Common\ClassLoader('Doctrine', $lib );
$classLoader->register();
$responsesCL = new \Doctrine\Common\ClassLoader('Responses', __DIR__.'/../php');
$responsesCL->register();
$entitiesCL = new \Doctrine\Common\ClassLoader('Entities', __DIR__.'/../php');
$entitiesCL->register();
$servicesCL = new \Doctrine\Common\ClassLoader('Services', __DIR__.'/../php');
$servicesCL->register();
太字の DIR は実際には__ DIR __
php 定数です。
現在、サービス パッケージでエンティティを参照していますが、これが問題の始まりです。何らかの理由で、ファイルが見つからないという問題が原因でエラーが発生します。たとえば、次のようになります。
必要な '/var/www/projects/PlatformManagement/config/../php/Services/Entities/User.php' (include_path='.:/usr/share/pear:/usr/share/php') を開くことができませんでした /usr/share/pear/Doctrine/Common/ClassLoader.php 行148
どういうわけか、パスに余分な「サービス」があり、明らかに有効なパスではありません。なぜそこに余分なディレクトリがあるのか 少し困惑していますか?すべての名前空間と呼び出しを 3 回チェックしましたが、問題ありません。
見てもらうにはもう 1 組の目が必要です。ここで明らかな何かが欠けていると思いますが、それを見つけることはできません :|
ああ、これは最新の Doctrine 2 Beta (4) と fedora の php 5.3.3 です。
ありがとう、グレッグ