Задать вопрос
@sherzad_90

Почему PHP не видит класс через namespace??

Доброго времени суток!

У меня проблема в следующем, класс не видит другой подключенный класс.

На главной странице сообщение об ошибке:

Fatal error: Uncaught Error: Class "MyProject\Models\ActiveRecordEntity" not found in C:\OSPanel\domains\projectoop\src\MyProject\Models\Articles\Article.php:7 Stack trace: #0 C:\OSPanel\domains\projectoop\index.php(4): require() #1 {main} thrown in C:\OSPanel\domains\projectoop\src\MyProject\Models\Articles\Article.php on line 7

И так код файла "projectoop\src\MyProject\Models\Articles\Article.php"
<?php

namespace MyProject\Models\Articles;

use MyProject\Models\ActiveRecordEntity;

class Article extends ActiveRecordEntity
{
    /** @var string */
    protected $name;

    /** @var string */
    protected $text;

    /** @var string */
    protected $authorId;

    /** @var string */
    protected $createdAt;

    /**
     * @return string
     */
    public function getName(): string
    {
        return $this->name;
    }

    /**
     * @return string
     */
    public function getText(): string
    {
        return $this->text;
    }

    protected static function getTableName(): string
    {
        return 'articles';
    }
}


код файла "projectoop\src\MyProject\Models\ActiveRecordEntity.php"
<?php

namespace MyProject\Models;

use MyProject\Services\Db;

abstract class ActiveRecordEntity
{
    /** @var int */
    protected $id;

    /**
     * @return int
     */
    public function getId(): int
    {
        return $this->id;
    }

    public function __set(string $name, $value)
    {
        $camelCaseName = $this->underscoreToCamelCase($name);
        $this->$camelCaseName = $value;
    }

    private function underscoreToCamelCase(string $source): string
    {
        return lcfirst(str_replace('_', '', ucwords($source, '_')));
    }

    /**
     * @return static[]
     */
    public static function findAll(): array
    {
        $db = new Db();
        return $db->query('SELECT * FROM `' . static::getTableName() . '`;', [], static::class);
    }

    abstract protected static function getTableName(): string;
}


Используй Open Server
Модули стоят такие:
HTTP: Apache_2.4-PHP_8.0-8.1
PHP: PHP_8.1
MySQL: MySQL-5.6

В чем может быть ошибка?
  • Вопрос задан
  • 200 просмотров
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы