Composer autoload - 如何从不同的文件夹中获取类、特征、接口?
Composer autoload - How to fetch classes, traits, interfaces from different folders?
如何使用 composer autoload 从不同的文件夹中获取类、特征、接口?
其中一些我使用命名空间,例如,
controller/Foo.php,
namespace MyNamespace;
class Foo
{
public $message = 'hello Foo';
}
model/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);
错误,
Fatal error: Class 'MyNamespace\Foo' not found in C:...
composer.json,
{
"autoload": {
"psr-0": {
"": "ext/",
"": "controller/",
"": "model/"
}
}
}
我在许多不同的文件夹中有很多类(它可能会扩展),那么当我在一个新文件夹中有新类时,有什么方法可以无需重新安装 作曲家自动加载吗?
您必须标准化您的命名空间和文件夹结构。如果您在不同的文件夹中有相同的命名空间,则很难创建一个简单的逻辑来自动加载它们。尝试在您的命名空间中使用另一个段,例如:
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
如何使用 composer autoload 从不同的文件夹中获取类、特征、接口?
其中一些我使用命名空间,例如,
controller/Foo.php,
namespace MyNamespace;
class Foo
{
public $message = 'hello Foo';
}
model/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);
错误,
Fatal error: Class 'MyNamespace\Foo' not found in C:...
composer.json,
{
"autoload": {
"psr-0": {
"": "ext/",
"": "controller/",
"": "model/"
}
}
}
我在许多不同的文件夹中有很多类(它可能会扩展),那么当我在一个新文件夹中有新类时,有什么方法可以无需重新安装 作曲家自动加载吗?
您必须标准化您的命名空间和文件夹结构。如果您在不同的文件夹中有相同的命名空间,则很难创建一个简单的逻辑来自动加载它们。尝试在您的命名空间中使用另一个段,例如:
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