Почему не видит класс в PHP?
Fatal error: Uncaught Error: Class "app\Worker" not found in
Index.php
<?php
require_once('../vendor/autoload.php');
$worker = new \app\Worker();
$worker->work();
Worker.php
<?php
namespace App;
class Worker
{
public string $name;
public int $age;
public array $hours;
public function work() {
print_r('i am working');
}
}
composer.json
{
"autoload": {
"psr-4": {
"App\\": "/app"
}
}
}
Потому, что "app" и "App" - РАЗНЫЕ пространства имён.
Регистр букв имеет значение.
Опа, знакомый код
Это сообщение об ошибке указывает на то, что PHP-скрипт пытается создать экземпляр объекта класса с именем "app \ Worker" в Index.php файл, но он не может найти определение для этого класса.
Существует несколько возможных причин этой ошибки:
Файл, содержащий определение для класса "app \ Worker", Worker.php , находится не в нужном месте. Убедитесь, что файл находится в каталоге "app", как указано в файле composer.json.
Пространство имен класса неверно. Убедитесь, что пространство имен класса в Worker.php файл - это "Приложение", а не "приложение". В PHP имена классов чувствительны к регистру.
Автозагрузчик composer работает некорректно. Попробуйте выполнить команду "composer dump-автозагрузка", чтобы восстановить файлы автозагрузки.
В имени класса в Index.php досье. Убедитесь, что имя класса написано правильно и что оно совпадает с именем класса в Worker.php досье.
Возможно, вы пропустили запуск команды установки composer.
Проверив эти вещи, вы должны быть в состоянии устранить ошибку и заставить скрипт работать должным образом.