如何使用作曲家自动加载从不同的文件夹中获取类、特征、接口?
其中一些我使用命名空间,例如,
控制器/Foo.php,
namespace MyNamespace;
class Foo
{
public $message = 'hello Foo';
}
型号/嘘声.php
namespace MyNamespace;
class Boo
{
public $message = 'hello Boo';
}
索引.php,
// Composer.
require 'vendor/autoload.php';
use MyNamespaceFoo;
$Foo = new Foo();
var_dump($Foo);
错误
致命错误:在 C 中找不到类"MyNamespace\Foo":...
作曲家.json,
{
"autoload": {
"psr-0": {
"": "ext/",
"": "controller/",
"": "model/"
}
}
}
我在许多不同的文件夹中有很多类(它可能会扩展),那么当我在新文件夹中有新类时,有什么方法可以不重新安装作曲家自动加载吗?
您必须标准化命名空间和文件夹结构。如果在不同的文件夹中具有相同的命名空间,则很难创建简单的逻辑来自动加载所有文件夹。尝试在命名空间中使用另一个段,例如:
namespace MyNamespaceController;
class Foo
{
public $message = 'hello Foo';
}
和:
namespace MyNamespaceModel;
class Boo
{
public $message = 'hello Boo';
}
在你的作曲家.json中:
{
//..
"autoload": {
"psr-4": {
"MyNamespace\Model\": "/path/to/model/folder/",
"MyNamespace\Controller\": "/path/to/controller/folder/"
}
}
}
设置完成后,请致电:
composer dump-autoload