Navegación
-
Servicios
-
Noticias
- Google, Facebook y Twitter planean una original protesta
- Adiós Dennis Ritchie
- Muere Steve Jobs
- Cierra Bizarre Creations
- No habrá más Ubuntu Netbook Edition
- Cómo es el Internet Explorer 9 que será lanzado el lunes
- Impulsan una baja del costo de Internet
- Software argentino: ¿"niña bonita" de la economía local?
- Sex.com se vendió en u$s 13 millones
- Google puso fin al misterio de Batman
- Todas las noticias
-
Artículos
-
Descargas
-
Últimos 15 usuarios
-
Usuarios Top 15
-
Sitios recomendados
Web social
Tabla de contenidos
La tabla de contenidos pertenece al artículo completo y no al contenido parcial de cada página del mismo si fuese el caso.
Resúmen
Con la pronta venida de PHP 6 a los hostings, es bueno conocer las bases que presenta PHP 5 en cuanto a programación orientada a objetos, sobre todo en lo que se refiere a la SPL.
Sobre el autor
Gastón tiene 30 años, vive en Argentina / Santa Fe / Santa Fe y su ocupación es Desarrollador de aplicaciones web.
Forma parte del club desde 19/10/2009 a las 20:52 habiendo estado en linea ayer a las 00:18 por última vez.
Ha publicado 47 artículos en clubdesarrolladores con un promedio de valoración de 7.87 puntos. Puedes visitar su sitio web en http://www.devstudios.com.ar
Estadísticas
- Leido 1383 veces
- Valorado 8.00 puntos
StdClass
La clase stdClass es una clase genérica, nativa (built-in) que permite crear objetos de manera muy sencilla.
Primeramente veamos que nos dice PHP sobre stdClass.
Reflection::export(new ReflectionClass('stdClass'));Class [ <internal> class stdClass ] {
- Constants [0] {
}
- Static properties [0] {
}
- Static methods [0] {
}
- Properties [0] {
}
- Methods [0] {
}
}Esa es la información que nos proporciona el API de reflexión de PHP5 sobre la clase stdClass. Como puede verse no cuenta con nada, ni constantes, ni propiedades, ni métodos (estáticos ni dinámicos).
StdClass le dá el tipo de clase a la variable, y por ende nos permite hacer cosas como las siguientes:
$stdObject = new stdClass();
$stdObject->property = 10;
$stdObject->anotherProperty = 20;
echo $stdObject->property + $stdObject->anotherProperty; //30Es decir que permite asignar y leer propiedades con notación de objeto. ¿Pero realmente esto es útil?
Existen algunos casos en los que si, por ejemplo cuando lo que queremos enviar a un método o retornar del mismo sea una clase con propiedades solamente (struct?).
class Users {
private $users = array();
public function __construct() {
$this->users = array(
array('Jhon', 'Doe', 31, 'male'),
array('Mary', 'Edo', 24, 'female'),
array('Joe', 'Ode', 43, 'male')
);
}
public function get($i) {
$obj = new stdClass();
$obj->name = $this->users[$i][0];
$obj->surname = $this->users[$i][1];
$obj->age = $this->users[$i][2];
$obj->gender = $this->users[$i][3];
return $obj;
}
}La idea de ésta clase es mantener una lista de usuarios en un array bidimensional y, mediante el método get(i), retornar un usuario en particular como objeto. Definiendole sus propiedades "al vuelo".
$users = new Users();
for($i = 0; $i < 3; ++$i) {
var_export($users->get($i));
}La salida es:
stdClass::__set_state(array(
'name' => 'Jhon',
'surname' => 'Doe',
'age' => 31,
'gender' => 'male',
))
stdClass::__set_state(array(
'name' => 'Mary',
'surname' => 'Edo',
'age' => 24,
'gender' => 'female',
))
stdClass::__set_state(array(
'name' => 'Joe',
'surname' => 'Ode',
'age' => 43,
'gender' => 'male',
))Si se desea se puede utilizar de esta manera:
$users = new Users();
for($i = 0; $i < 3; ++$i) {
echo "Usuario {$i}", PHP_EOL;
foreach($users->get($i) as $property => $value){
echo "\t", $property, ' = ', $value, PHP_EOL;
}
}Para conseguir esta salida:
Usuario 0
name = Jhon
surname = Doe
age = 31
gender = male
Usuario 1
name = Mary
surname = Edo
age = 24
gender = female
Usuario 2
name = Joe
surname = Ode
age = 43
gender = maleLas posibilidades superan este inocente ejemplo, se podría crear un método que convierta un array en un objeto, se podrían retornar arrays de objetos estándar, etc.
De todas maneras la gran utilidad de stdClass tiene que ver con la creación de clases de usuario en PHP, debido a que implícitamente el core de PHP utiliza la definición de stdClass al crear una nueva clase, dándole a la nueva entidad características de clase; un lugar para propiedades, otro para propiedades estáticas, otro para métodos y finalmente otro para métodos estáticos.
Si aplican reflexión a una clase definida sin ser extendida explícitamente de stdClass no verán relación alguna en la salida, pero internamente es así como funciona.
Si tiene alguna pregunta sobre éste artículo por favor deje un comentario y será respondido.
Descargas
No existen descargas asociadas
Comentarios
Sus comentarios son importantes.
Listado de comentarios
No hay comentarios para listar, si desea puede crear el primer comentario para este artículo.
Agregar un comentario
Debe estar identificado para agregar un comentario
delicio.us
Google Bookmark
Technorati
Twitthis
Meneame
Yahoo My Web
Fresqui
Enchilame