編集:
PEAR の名前付け/名前空間を使用しているとは言いませんでした。その場合、動作が少し異なります。
最初に、フレームワークのクラスの命名を調整する必要があります。それらにはFramework
セグメントが必要なので:
Controller_Front
する必要があります
Framework_Controller_Front
これにより、コントローラーの一意の ns が得られます。
次に、ローダーを使用して、次のようなプレフィックスを登録します。
$loader->registerPrefix('Framework', 'absolute/path/to/lib');
PEAR 命名で ClassLoader を使用したことがないので_
、プレフィックスに末尾を残す必要があるかどうかはわかりませんが、試行錯誤でそれを理解できるはずです。また、「absolute/path/to/lib」または「absolute/path/to/lib/Framework」へのパスを指すかどうかもわかりません-再度試行錯誤してそれを指摘する必要があります:-)
どこが間違っているのかわかりませんが、これを行いましょう。
次の内容のファイルを作成します/lib
。autoload.php
// require/use statements for the Symfony ClassLoader Component
$loader = new UniversalClassLoader();
$loader->registerNamespaces(array(
'Framework' => __DIR__
));
$loader->register();
return $loader;
この時点で、クラス・ローダーがセットアップされます。次に、各サイトのindex.php(またはブートストラップ手順を実行するために使用するものは何でも:
// configure the path to the framework from SITE/public and require the autoload.php
$frameworkDir = realpath(__DIR__ . '/../../lib');
$siteDir = realpath(__DIR__ . '/../'); // whatever gives us site1
$loader = require_once($frameworkDir . '/autoload.php');
// now lets start mapping our application specific namespaces
$loader->registerNamespace('App1', $siteDir . '/App/App1');
$loader->registerNamespace('App2', $siteDir . '/App/App2');
// then the rest of your bootstrapping and FC initialization
Symfony Components ClassLoaderを試してみるのもいいかもしれません- それは私が普段使っているものです。名前空間を絶対パスで登録している限り、それは問題ではありません。
$loader = new UniversalClassLoader();
$loader->registerNamespaces(array(
'Framework' => __DIR__ . '/lib',
'AppOne' => $somevarHoldingTheABSPrefixToTheAppOneCode . '/lib',
'AppTwo' => $somevarHoldingTheABSPrefixToTheAppTwoCode . '/lib',
'AppTwo\\SomeVendor' => $somevarHoldingTheABSPrefixToTheAppTwoCode . '/vendor/somevendor/lib'
));
$loader->register();