Top.Mail.Ru
Ответы

Почему не видит класс в 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.
Проверив эти вещи, вы должны быть в состоянии устранить ошибку и заставить скрипт работать должным образом.