0

ビルドしたばかりの PHP5 フレームワークに Doctrine を統合したいと考えています。名前空間を使用しています。ライブラリはマップで構成されています。

  • アプリ (コントローラー、ブロック、アクションなど)

  • ext (外部ライブラリ)

  • sys (カーネルお​​よびルート オブジェクト)。

今、map ext にある Doctrine を統合したいと思います。

私が持っている呼び出しクラスでは:

namespace app\example;
use ext\Doctrine\DBAL\DriverManager;
$conn = DriverManager::getConnection($connectionParams, $config);

これを機能させるには、Doctrine のすべての名前空間参照を次のように変更する必要があります。

namespace ext\Doctrine\DBAL;
use ext\Doctrine\Common\EventManager;

私の意見では、これは非常に洗練されていないソリューションです。

質問: Doctrine 名前空間を変更しない方法はありますか? 外部ライブラリに対処するためのより良い戦略はありますか?

4

1 に答える 1

0

より良い戦略は、ライブラリによって提供される名前空間を使用することです。これを変更することは非常に珍しいことです。

あなたの主な問題は、実際にはオートロードが原因だと思います。名前空間とディレクトリが同一である必要はないことに注意してください。

オートローダを少し賢くして、ext で外部ライブラリを探すようにしてください。そこにある名前空間の小さなレジストリを保持できます。

いっそのこと、composerを使い始めてください。

于 2012-12-02T23:14:36.447 に答える