我假设你像这样在 bootstrap.php 中加载你的 Silex 类:
// 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();
这个解决方案对我有用。希望对你有效。