Каким способом можно получить параметры класса из любого участка кода PHP ? Здравствуйте, уважаемые пользователи.
Допустим у нас есть класс USER
Данный класс при первом обращении к классу делает запрос в MySql базу данных от куда получает личные данные пользователя, настройки , уровень доступа и так далее. В последующем мы можем обратится к нашем классу из любого участка кода когда нам понадобится получить определённые данные связанные с нашим пользователем.
Возникает вопрос как реализовать данный класс который можно будет использовать в других классах при этом не объявляя его заново в каждом новом классе.
Как я понимаю наследование и объявление класса внутри другого класса приведёт к исполнению нового экземпляра класса.
Какие есть способы решения данного вопроса ? Как я понимаю есть несколько вариантов а именно это паттерн registry, singleton ... какой способ наиболее подходящий ?
Заранее спасибо, буду признателен любой полезной информации .

21 Авг 2019 в 07:09
149 +1
1
Ответы
1

Один из способов решения данной проблемы - использование шаблона проектирования Singleton.

Суть этого шаблона заключается в том, что класс имеет только один экземпляр и предоставляет к нему глобальную точку доступа.

Пример реализации:

class User {
private static $instance;
private $userData;
private function __construct() {
// Здесь происходит запрос к базе данных и получение данных пользователя
$this->userData = // Получение данных пользователя из базы данных
}
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new User();
}
return self::$instance;
}
public function getUserData() {
return $this->userData;
}
}
// Использование
$user = User::getInstance();
$userData = $user->getUserData();

Таким образом, при обращении к методу getInstance() будет создан единственный экземпляр класса User, а при последующих обращениях будет возвращен уже существующий экземпляр. Таким образом, Вы можете использовать этот экземпляр в любой части Вашего кода, не создавая новые экземпляры класса.

Помимо Singleton, также можно рассмотреть использование паттерна Registry, который позволяет хранить объекты с возможностью доступа к ним из любого места в коде.

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