2

アプリの外部からさまざまなライブラリクラスを含めようとしています(さまざまなアプリで使用されます)。

私のアプリは次の場所にあります。

/var/www/websites/my_website/app/

そして、クラスは次の場所にあります。

/var/www/websites/libs/CakePHP/MyClass.php

私のブートストラップでは、そのディレクトリからクラスをロードするためのパスを追加する方法を理解するのに苦労しています。

App::build(array('Lib' => array('/var/www/websites/lib/')));

App::uses('MyClass', 'CakePHP');

$myClass = new MyClass();
4

1 に答える 1

3

ロードはブートストラップではなく、AppControllerbeforeFilterメソッドで行う必要があります。

また、Cake以外のライブラリ用に予約された場所があります。これはapp/Vendorディレクトリです。そこにすべてのクラスを配置して、次の方法でチームを簡単にロードできます。

App::uses('MyClass', 'Vendor');

本当に代替パスに含める必要がある場合は、代わりにフルパスを指定して呼び出す必要があります。また、必ず同じ名前を使用してください。今、あなたは指定していますが、それ自体がそれ自体であるかのようにLib呼び出しています(そうではありません)。これは機能しません。代わりに次のようになります。CakePHPbuild

App::build(array('Lib' => array('/var/www/websites/lib')));
App::uses('MyClass', 'Lib/CakePHP'); // Define the subdirectory here

ベンダーファイルのロードに関するドキュメントも確認してください。かなりの例があります。

于 2013-01-10T21:00:39.750 に答える