«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу создать экземпляр класса из переменной в PHP?

Как я могу создать экземпляр класса из переменной в PHP?

Опубликовано 18 ноября 2024 г.
Просматривать:280

How Can I Instantiate a Class from a Variable in PHP?

Реализация создания экземпляра класса из переменной в PHP

В PHP вы можете столкнуться со сценарием, когда вам нужно создать экземпляр класса из значения переменной. Проиллюстрируем это на примере:

$var = 'bar';
$bar = new {$var}Class('var for __construct()'); //$bar = new barClass('var for __construct()');

Этот метод пытается создать экземпляр класса, указанного переменной $var. Однако PHP изначально не поддерживает этот синтаксис.

Альтернативный подход без eval()

Чтобы добиться этого без использования eval(), вы можете использовать переменную для хранения имени класса:

$classname = $var . 'Class'; // e.g. $classname = 'barClass'

$bar = new $classname('var for __construct()');

Factory Pattern

Этот метод часто используется в шаблоне Factory, который используется для централизации создания классов и его разделения. от процесса создания. В таких сценариях фабричный класс будет создавать нужные экземпляры класса динамически на основе конфигурации или других параметров.

Дополнительные ресурсы

Для получения дополнительной информации о динамических функциях языка и пространствах имен обратитесь к следующим материалам. ресурсы:

  • [Пространства имен](https://www.php.net/manual/en/language.namespaces.php)
  • [Функции динамического языка](https:/ /www.php.net/manual/en/language.types.dynamic.php)
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3