Por favor, defina qué stdClass
es.
1049
stdClass
es la clase vacía genérica de PHP, algo así como Object
en Java o object
en Python ( Editar: pero en realidad no se usa como clase base universal; gracias @Ciaran por señalar esto ).
Es útil para objetos anónimos, propiedades dinámicas, etc.
Una manera fácil de considerar el StdClass es como una alternativa al arreglo asociativo. Vea este ejemplo a continuación que muestra cómo json_decode()
permite obtener una instancia de StdClass o una matriz asociativa. Además, pero no se muestra en este ejemplo, SoapClient::__soapCall
devuelve una instancia de StdClass.
<?php
//Example with StdClass
$json = '{ "foo": "bar", "number": 42 }';
$stdInstance = json_decode($json);
echo $stdInstance->foo . PHP_EOL; //"bar"
echo $stdInstance->number . PHP_EOL; //42
//Example with associative array
$array = json_decode($json, true);
echo $array['foo'] . PHP_EOL; //"bar"
echo $array['number'] . PHP_EOL; //42
Vea Propiedades dinámicas en PHP y StdClass para más ejemplos.
{}
construcción de JavaScript .function(StdClass $a, array $params)
verificar si$a
es objeto yinstanceof
.stdClass
es solo una clase genérica 'vacía' que se usa al convertir otros tipos a objetos. A pesar de lo que dicen las otras dos respuestas, nostdClass
es la clase base para objetos en PHP. Esto se puede demostrar con bastante facilidad:No creo que haya un concepto de un objeto base en PHP
fuente
stdClass es otra gran característica de PHP. Puedes crear una clase PHP anónima. Vamos a ver un ejemplo.
ahora cree que tiene otra clase que se inicializará con un objeto de página y se ejecutará en base a él.
Ahora tiene que crear un nuevo objeto PageShow con un Objeto Page.
Aquí no es necesario escribir una nueva plantilla de clase para esto, simplemente puede usar stdClass para crear una clase sobre la marcha.
fuente
stdClass
.También vale la pena señalar que también
stdClass
se puede crear un objeto a partir del uso dejson_decode()
.fuente
True
. Los booleanos son minúsculastrue
ofalse
.Usando stdClass puedes crear un nuevo objeto con sus propias propiedades. Considere el siguiente ejemplo que representa los detalles de un usuario como una matriz asociativa.
Si necesita representar los mismos detalles que las propiedades de un objeto, puede usar stdClass como se muestra a continuación.
Si es desarrollador de Joomla, consulte este ejemplo en los documentos de Joomla para obtener más información.
fuente
Igualmente,
produce un objeto stdClass - auto fundido
Hoy descubrí esto escribiendo mal:
¡Frio!
fuente
stdClass no es una clase anónima ni un objeto anónimo
Las respuestas aquí incluyen expresiones que
stdClass
son una clase anónima o incluso un objeto anónimo. No es verdadstdClass
es solo una clase predefinida regular. Puede verificar esto utilizando elinstanceof
operador o la funciónget_class
. Nada especial va aquí. PHP usa esta clase cuando convierte otros valores a objetos.En muchos casos donde
stdClass
los programadores lo usan, la matriz es una mejor opción, debido a las funciones útiles y al hecho de que este caso de uso representa la estructura de datos, no un objeto real.fuente
También vale la pena señalar que al usar Casting en realidad no es necesario crear un objeto como en la respuesta dada por @Bandula. En su lugar, simplemente puede convertir su matriz en un objeto y se devuelve el stdClass. Por ejemplo:
Output: again
fuente
En realidad intenté crear stdClass vacío y comparé la velocidad con la clase vacía.
luego procedió a crear 1000 stdClasses y emps ... las clases vacías se realizaron en alrededor de 1100 microsegundos, mientras que stdClasses tomó más de 1700 microsegundos. Así que supongo que es mejor crear su propia clase ficticia para almacenar datos si desea usar objetos para eso (las matrices son mucho más rápidas tanto para escribir como para leer).
fuente
objetos stdClass en uso
StdClass le permite crear clases anónimas y con la conversión de objetos también puede acceder a las claves de una matriz asociativa en estilo OOP. Al igual que accedería a la propiedad del objeto regular.
Ejemplo
hará eco
fuente
Si desea crear rápidamente un nuevo objeto para contener algunos datos sobre un libro. Harías algo como esto:
Por favor, consulte el sitio - http://www.webmaster-source.com/2009/08/20/php-stdclass-storing-data-object-instead-array/ para más detalles.
fuente
Tenga en cuenta que 2 stdClasses vacías no son estrictamente iguales. Esto es muy importante al escribir expectativas de burla.
fuente
El manual de php.net tiene algunas explicaciones sólidas y ejemplos aportados por los usuarios de lo que es stdClass, especialmente me gusta este http://php.net/manual/en/language.oop5.basic.php#92123 , https: // stackoverflow.com/a/1434375/2352773 .
fuente
stdclass es una forma en que el php evite dejar de interpretar el script cuando hay algunos datos que deben colocarse en una clase, pero desafortunadamente esta clase no se definió
Ejemplo:
Aquí los datos se colocarán en las 'Tareas' predefinidas. Pero, si hicimos el código así:
entonces el php pondrá los resultados en stdclass .
simplemente phpdice eso: mira, tenemos un buen KIDS [Objetos] Aquí pero sin Padres. Entonces, los enviaremos a un hogar de cuidado infantil infantilstdclass :)
fuente
También puede usar
object
para emitir matrices a un objeto de su elección:Ahora, para crear un objeto de tipo
Example
e inicializarlo, puede hacer cualquiera de estos:O
El segundo método es principalmente útil para inicializar objetos con muchas propiedades.
fuente
stClass es una clase vacía creada por php, y solo php debería usarla, porque no es solo una clase "vacía", php usa stdClass para convertir matrices a estilo de objeto si necesita usar stdClass, le recomiendo dos opciones mejores : 1- usa matrices (mucho más rápido que las clases) 2- crea tu propia clase vacía y úsala
¿Qué hace que alguien piense en usar el estilo de objeto en lugar del estilo de matriz?
fuente
La razón por la que tenemos stdClass es porque en PHP no hay forma de distinguir una matriz normal de una matriz asociada (como en Javascript tiene
{}
para objeto y[]
matriz para distinguirlos).Entonces esto crea un problema para los objetos vacíos. Toma esto por ejemplo.
PHP:
Supongamos que desea codificar JSON la variable $ c
Ahora supongamos que eliminó todas las claves para dejarlas
$b
vacías. Como$b
ahora está vacío (¿eliminó todas las claves, recuerda?), Parece[]
que puede ser una matriz u objeto si lo mira.Entonces, si vuelve a hacer un json_encode, la salida será diferente
Esto es un problema porque sabemos
b
que se suponía que era una matriz asociada, pero PHP (o cualquier función como json_encode) no lo hace.Entonces stdClass viene a rescatar. Tomando el mismo ejemplo nuevamente
Entonces, incluso si elimina todas las claves
$b
y las deja vacías, ya que es una clase estándar, no importará y cuando lo codifique, obtendrá esto:Esta es también la razón por la cual
json_encode
yjson_decode
por defecto devuelve stdClass.fuente