У меня есть умопомрачитель, что я что-то упускаю.У меня есть каталог web
, с двумя библиотеками в качестве дочерних каталогов:
/
web/
vendor/
composer/
autoload_psr4.php
...
autoload.php
index.php
lib-one/
src/
A.php
lib-two/
src/
B.php
Файлы классов:
A.php
<?php
namespace Org\LibOne;
class A
{
public function __construct()
{
}
}
B.php
<?php
namespace Org\LibTwo;
class B
{
public function __construct()
{
}
}
Я запустил composer update
, который генерирует ожидаемый vendor/composer/autoload_psr4.php
файл:
vendor / composer / autoload_psr4.php
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'Org\\LibOne\\' => array($baseDir . '/../lib-one/src'),
'Org\\LibTwo\\' => array($baseDir . '/../lib-two/src'),
);
Наконец, внутривеб-каталог У меня есть индексный файл со следующим кодом:
index.php
<?php
include('vendor/autoload.php');
use Org\LibOne\A;
use Org\LibTwo\B;
$a = new A();
$b = new B();
$a
назначен экземпляр A
просто отлично, а $b
ошибки, сказав Class 'Org\LibTwo\B' not found in 'web/index.php line 9'
.
Разница только заключается в том, что я добавил Org\LibTwo
после того, как код, использующий Org\LibOne
, уже функционировал.
У меня проверено пять раз написание, пространство имен, каталоги и т. д. Пожалуйста, помогите вернуть мое здравомыслие.