¿Es posible en PHP crear una instancia de un objeto a partir del nombre de una clase, si el nombre de la clase se almacena en una cadena?¿Puede PHP crear una instancia de un objeto a partir del nombre de la clase como una cadena?
Respuesta
Sí, definitivamente.
$className = 'MyClass';
$object = new $className;
<?php
$type = 'cc';
$obj = new $type; // outputs "hi!"
class cc {
function __construct() {
echo 'hi!';
}
}
?>
estático también:
$class = 'foo';
return $class::getId();
Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación. - [De la crítica] (/ review/low-quality-posts/16691553) – Blackbam
@Blackbam respuesta complementaria relacionada relevante. Por favor solo comente si es útil. –
Es cierto que funciona básicamente de todos modos un poco de explicación de su respuesta sería agradable. La pregunta era "¿puede PHP instanciar un objeto?", Pero el acceso a una función miembro estática no es un acceso a un objeto. – Blackbam
Usted puede hacer algo de invocación dinámica almacenando su nombre de clase (s)/métodos en un almacenamiento tales como una base de datos . Suponiendo que la clase es resistente a errores.
sample table my_table
classNameCol | methodNameCol | dynamic_sql
class1 | method1 | 'select * tablex where .... '
class1 | method2 | 'select * complex_query where .... '
class2 | method1 | empty use default implementation
etc .. Luego, en el código utilizando las cadenas devueltas por la base de datos de nombres de clases y métodos. incluso puede almacenar consultas sql para sus clases, el nivel de automatización si está a la altura de su imaginación.
$myRecordSet = $wpdb->get_results('select * from my my_table')
if ($myRecordSet) {
foreach ($myRecordSet as $currentRecord) {
$obj = new $currentRecord->classNameCol;
$obj->sql_txt = $currentRecord->dynamic_sql;
$obj->{currentRecord->methodNameCol}();
}
}
Utilizo este método para crear servicios web REST.
- 1. Crear una instancia de una clase Python a partir de un nombre
- 2. Crear una instancia de una clase a partir de una cadena
- 3. cómo crear una instancia de un objeto de clase a partir de una cadena en Objective-C?
- 4. Java cómo crear una instancia de una clase de cadena
- 5. Programatically usando una cadena como nombre de objeto cuando una instancia de un objeto
- 6. Cómo crear una instancia nueva a partir de un objeto de clase en Python
- 7. Crear URL a partir de una cadena
- 8. C# Reflexión: una instancia de un objeto con nombre de la clase cadena
- 9. Reflejo en Ruby. Crear una instancia de un objeto por el nombre de clase dado
- 10. ¿Cómo creo una instancia a partir de una cadena en C#?
- 11. Creación de instancia de clase PHP con una cadena
- 12. una instancia de una clase a partir de su nombre textual
- 13. ¿Obtiene el objeto de función JavaScript a partir de su nombre como una cadena?
- 14. PHP: instancia equivalente para un nombre de clase representado por una cadena
- 15. ¿Cómo puedo crear un objeto Delphi a partir de una referencia de clase y asegurar la ejecución del constructor?
- 16. ¿Crear una instancia de clase desde su nombre?
- 17. Creando un objeto dinámicamente donde el nombre de clase se da como una cadena
- 18. ¿Puede una instancia de clase autodestruirse?
- 19. crear nuevo objeto Javascript a partir de una variable
- 20. cómo crear XElement a partir de una cadena?
- 21. una instancia de una nueva clase del nombre de una variable en un espacio de nombres
- 22. instancia de clase de PHP a JSON
- 23. ¿Cómo crear un nombre de variable a partir del valor de una cadena en Ruby on Rails?
- 24. ¿Cómo puedo crear una instancia de GzipFile a partir del "objeto similar a un archivo" que devuelve urllib.urlopen()?
- 25. C++ Crear una instancia de un objeto de una clase de dos formas diferentes
- 26. Crear una clase PHP -> Crear un objeto en otra clase
- 27. ¿Cómo se puede convertir a un tipo usando el nombre del tipo como una cadena?
- 28. Crear método anónimo a partir de una cadena en C#
- 29. Crear un nombre de variable a partir de una cadena en Lisp
- 30. PHP pasando un nombre de clase se convierte en una cadena cuando pasa a una función
Genial, debería haberlo probado antes de preguntarle a jeje. ¡Gracias! – user135295
@user: también correcto. Me pregunto por qué vine directamente a SO en lugar de hacer el mínimo indispensable. lol – Ben
De hecho, no es tan evidente. Sé que en Java es una cosa llamada reflexión, pero esto es muy simple en comparación con eso. –