@l4m3r

Работает ли автозагрузка классов, которые не используются?

namespace App\Models;

use App\Models\Category;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;

class User extends Model
{
    /** @inheritdoc */
    protected $table = 'users';

    public function category(): HasOne // !!!
    {
        return $this->hasOne(Category::class, 'id', 'category_id'); // !!!
    }
}


Подгружаются ли классы HasOne, Category всегда при подключении класса User или только при вызове метода category()?

Я к тому, что целесообразно с точки зрения производительности в методах класса возвращать класс или использоваться их в параметрах, чтобы заменить phpdoc в этом смысле?
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
php666
@php666
PHP-макака
Подгружаются ли классы HasOne, Category

HasOne будет инстанцирован и загружен автолоадером, ведь возвращается объект этого класса.
Category нет:
Разрешение имен класса с использованием ::class происходит на этапе компиляции. Это означает, что на момент создания строки с именем класса автозагрузки класса не происходит. Как следствие, имена классов раскрываются, даже если класс не существует. Ошибка в этом случае не выдается.


целесообразно с точки зрения производительности
к производительности этот вопрос не имеет значения. не надо заморачиваться над тем, что не имеет реального смысла. весь твой вопрос к практической пользе никакого отношения не имеет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы