В чём преимущество автозагрузчика классов? Простой код:spl_autoload_register(function ($class) {
include 'user/app/' . $class . '.php';
});

$obj = new MyClass();
$obj->displayVar();
В папке user/app/ лежит много классов и преимущество очевидно в том, что не надо include_once или require делать для каждого. Т.е. мы экономим по мути только на времени интерпретации файлов с классами, ведь даже если мы их поключим, но экземпляр не создадим, то ресурсы-то им всё равно не выделяться...
А можно избавиться от строки $obj = new MyClass(); и создавать экземпляр автоматически в момент $obj->displayVar();?
Естественно заранее не создавая "впрозапас" по экземпляру каждого класса.

21 Авг 2019 в 07:01
126 +1
0
Ответы
1

Да, можно избавиться от строки $obj = new MyClass(); и создавать экземпляр автоматически в момент вызова метода $obj->displayVar();. Для этого вам нужно изменить код вашего класса MyClass таким образом, чтобы он создавал экземпляр себя самостоятельно в случае, если он еще не был создан. Например, можно использовать паттерн Singleton для этого:

class MyClass {
private static $instance;
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
public function displayVar() {
echo 'Var';
}
}
spl_autoload_register(function ($class) {
include 'user/app/' . $class . '.php';
});
$obj = MyClass::getInstance();
$obj->displayVar();

Таким образом, если экземпляр MyClass еще не был создан, метод getInstance() создаст его, а затем будет вызван метод displayVar() на этом экземпляре.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 727 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир