如何使用composer autoload从不同的文件夹中获取类,特征和接口?
其中一些我使用名称空间,例如,
控制器/ Foo.php,
namespace MyNamespace;
class Foo
{
public $message = 'hello Foo';
}
模型/ Boo.php
namespace MyNamespace;
class Boo
{
public $message = 'hello Boo';
}
的index.php,
// Composer.
require 'vendor/autoload.php';
use \MyNamespace\Foo;
$Foo = new Foo();
var_dump($Foo);
误差,
致命错误:在C:...
中找不到“MyNamespace \ Foo”类
composer.json,
{
"autoload": {
"psr-0": {
"": "ext/",
"": "controller/",
"": "model/"
}
}
}
我在许多不同的文件夹中有很多课程(它可能会扩展),所以当我在新文件夹中有新课程时,有没有办法没有重新安装作曲家自动加载?
答案 0 :(得分:1)
您必须标准化命名空间和文件夹结构。如果在不同的文件夹中具有相同的命名空间,则创建一个简单的逻辑来自动加载它们就更难了。尝试在命名空间中使用其他段,如:
namespace MyNamespace\Controller;
class Foo
{
public $message = 'hello Foo';
}
和
namespace MyNamespace\Model;
class Boo
{
public $message = 'hello Boo';
}
并在你的composer.json中:
{
//..
"autoload": {
"psr-4": {
"MyNamespace\\Model\\": "/path/to/model/folder/",
"MyNamespace\\Controller\\": "/path/to/controller/folder/"
}
}
}
设置完毕后,请致电:
composer dump-autoload