Автозагрузка Composer — Как получить классы, черты, интерфейсы из разных папок?

Как я могу использовать автозагрузку composer для извлечения классов, черт, интерфейсов из разных папок?

Некоторые из них я использую пространства имен, такие как,

Контроллер / 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);

ошибка,

Неустранимая ошибка: класс «MyNamespace \ Foo» не найден в C: …

composer.json,

{
"autoload": {
"psr-0": {
"": "ext/",
"": "controller/",
"": "model/"}
}
}

У меня есть много классов в разных папках (это может расшириться), так что есть ли способ без переустановки автозагрузка композитора, когда у меня новые классы в новой папке?

0

Решение

Вы должны стандартизировать свои пространства имен и структуру папок. Если у вас есть одно и то же пространство имен в разных папках, сложнее создать простую логику для их автоматической загрузки. Попробуйте использовать другой сегмент в вашем пространстве имен, например:

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
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]