Navegación
-
Servicios
-
Noticias
- Microsoft extiende el downgrade a Windows XP hasta el 2020
- Opera sumó la protección de AVG a su browser
- Un hombre dice ser dueño del 84% de Facebook
- Se descubre un buffer overflow en la versión de desarrollo de PHP6
- Google lanza una nueva beta de Chrome y es hasta un 35% más rápida
- Ya salio Ubuntu 10.04 LTS
- Digital Sky Technologies le compra ICQ a AOL
- Microsoft habla de la falta de soporte para Windows XP en la Wave 4
- Todas las noticias
-
Artículos
-
Descargas
-
Últimos 10 usuarios
-
Usuarios Top
-
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 29 años, vive en Argentina / Santa Fe / Santa Fe y su ocupación es Desarrollador de aplicaciones web.
Forma parte del club desde el 19/10/2009 habiendo estado en linea hace 6 días a las 01:23 por última vez.
Ha publicado 4 artículos en clubdesarrolladores con un promedio de valoración de 7.40 puntos. Puedes visitar su sitio web en http://www.devstudios.com.ar
Estadísticas
- Leido 540 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