"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo crear una instancia de una clase a partir de una variable en PHP?

¿Cómo puedo crear una instancia de una clase a partir de una variable en PHP?

Publicado el 2024-11-18
Navegar:627

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

Implementación de creación de instancias de clases a partir de una variable en PHP

En PHP, puede encontrar un escenario en el que necesite crear instancias de una clase a partir del valor de una variable. Ilustremos esto con un ejemplo:

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

Este método intenta crear una instancia de la clase especificada por la variable $var. Sin embargo, PHP no admite esta sintaxis de forma nativa.

Enfoque alternativo sin eval()

Para lograr esto sin usar eval(), puedes utilizar una variable para contener el nombre de la clase:

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

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

Patrón de fábrica

Esta técnica se emplea a menudo en el patrón Factory, que se utiliza para centralizar la creación de clases y desacoplarla desde el proceso de creación. En tales escenarios, una clase de fábrica crearía las instancias de clase deseadas dinámicamente según la configuración u otros parámetros.

Recursos adicionales

Para obtener más información sobre las características del lenguaje dinámico y los espacios de nombres, consulte lo siguiente recursos:

  • [Espacios de nombres](https://www.php.net/manual/en/language.namespaces.php)
  • [Características del lenguaje dinámico](https:/ /www.php.net/manual/en/language.types.dynamic.php)
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3