次のように、Silex クラスを bootstrap.php にロードすると仮定します。
// bootstrap.php
require_once __DIR__.'/vendor/autoload.php';
その場合、このコードを次のコードに置き換えます。
// bootstrap.php
$loader = require __DIR__.'/vendor/autoload.php';
$loader->add(YOUR_NAMESPACE, DIRECTORY_OF_THE_NAMESPACE);
例:
// bootstrap.php
$loader = require __DIR__.'/vendor/autoload.php';
$loader->add('Tutorial', __DIR__.'/src');
必要に応じて、複数の名前空間を追加できます。名前空間ごとに add メソッドを呼び出すだけです。クラスファイルを保存します
。src/
名前空間ごとに、この名前空間のクラス ファイルを含むフォルダーを作成します。ファイルは、クラスと同じ名前にする必要があります。
MyNamespace\MyClass => src/MyNamespace/MyClass.php
MyNamespace\SubNamespace\SubClass => src/MyNamespace/SubNamespace/SubClass.php
すべてのクラス ファイルで、最初の行に関連する名前空間を設定する必要があります。
// src/Tutorial/DemoController.php
namespace Tutorial;
class DemoController{
// class definition goes here..
}
これで、bootstrap.php を含むすべてのファイルでクラスにアクセスできるようになりました。
/app/MainController.php で、次のように独自のクラスにアクセスできるようになりました。
// app/MainController.php
use Tutorial\DemoController;
$foo = new DemoController();
この解決策は私にとってはうまくいきました。それがうまくいくことを願っています。