Ошибка автозапуска PSR-4: класс не найден
у меня такая структура проекта:
src/
├─ Model/
└─ User.php
Мой Пользователь.php-файл выглядит так:
<?php
namespace BixModel;
class User {
и мой композитор.автоматический загрузчик json:
"autoload": {
"psr-4": {
"Bix": "src/"
}
}
наконец мое ушко.php это:
use BixModelUser;
// PSR-4 Autoloader.
require_once "vendor/autoload.php";
однако, если я попытаюсь создать new User()
, я получаю ошибку Fatal error: Class 'User' not found in /var/www/public/api/v1/index.php on line 8
глядя на композитора autoload_psr4.php-файл выглядит нормально:
/ / autoload_psr4.в PHP @порожденных Композитор!--8-->
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname(dirname($vendorDir));
return array(
'XdgBaseDir' => array($vendorDir . '/dnoegel/php-xdg-base-dir/src'),
'Monolog' => array($vendorDir . '/monolog/monolog/src/Monolog'),
'KeenIO' => array($vendorDir . '/keen-io/keen-io/src'),
'Bix' => array($baseDir . '/src'),
);
может ли кто-нибудь указать, где я ошибаюсь с вышеизложенным?
1 ответов
прежде всего, Linux (я не уверен, какой ПК вы используете) чувствителен к регистру. В вашей автопогрузке вы определили src/bix
, а это src/Bix
.
но что более важно, с PSR-4 указанный префикс пространства имен -не входит в структуру каталогов (чтобы избежать каталогов, содержащих только один каталог). В вашем случае, если вы настраиваете "Bix\": "src/"
, класс Bix\Model\User
должен быть расположен в src/Model/User.php
.
редактировать: ты непонимание пространств имен PHP. В PHP, вы не говорите "импортировать все от Bix\Model
в глобальное пространство имен для этого файла" с use Bix\Model;
. Вместо этого это означает: "Alias Model
в этом файле Bix\Model
".
поэтому вы должны либо сделать:
require_once "vendor/autoload.php";
use Bix\Model;
$user = new Model\User();
или:
require_once "vendor/autoload.php";
use Bix\Model\User;
$user = new User();