PDA

Ver la Versión Completa : que significa this->atrib->metod();


gabrielflowers
30-01-2008, 21:50:04
me he topado con este tipo de instrucciones que quisiera me ayuden a entender:
$this->atrib->metod($param);

claro aparentemente pareciera que se esta llamando al atributo atrib de nuestro propio objeto, pero luego se hace referencia a ->metod($param); y eso me parece raro, que significa??

dec
30-01-2008, 21:56:17
Hola,

"$this" hace referencia, desde dentro de un objeto, al propio objeto en que se trabaja. Es como el "Self" de Delphi, si te suena de algo. "atrib" es ahí un miembro del objeto en cuestión. Y, dicho miembro, debe ser a su vez un objeto, que al menos cuenta con un método ("metod") que es ejecutado.

jhonny
30-01-2008, 21:57:32
me he topado con este tipo de instrucciones que quisiera me ayuden a entender:
this->atrib->metod($param);

claro aparentemente pareciera que se esta llamando al atributo atrib de nuestra propia clase, pero luego se hace referencia a ->metod($param); y eso me parece raro, que significa??

Bueno, debe ser una función que pertenece al atributo de la clase llamado atrib, cuyo tipo de atrib tambien debe ser una clase.

keyboy
30-01-2008, 21:58:17
Cuando defines un método de una clase, this se refiere al objeto en particular que se use cuando se llame a ese método. Esto es, si tienes una clase:


class Persona
{
function saluda()
{
...
}
}


y tienes varios objetos de esa clase:


$p = new Persona();
$q = new Persona();


Si usas:


$q->saluda();


dentro de la función saluda, this será $q (y no $p, por ejemplo).

La flecha -> sirve para referirse a los métodos a propiedades de una clase. Así, en tu ejemplo, method es un método de atrib, que asu vez debe ser una propiedad del objeto donde estás usando this.

Bye

jhonny
30-01-2008, 22:00:16
Hola,

"$this" hace referencia, desde dentro de un objeto, al propio objeto en que se trabaja. Es como el "Self" de Delphi, si te suena de algo. "atrib" es ahí un miembro del objeto en cuestión. Y, dicho miembro, debe ser a su vez un objeto, que al menos cuenta con un método ("metod") que es ejecutado.

Eso, como en Delphi :). Aunque la explicación mas detallada a sido la de keyboy :).

gabrielflowers
30-01-2008, 22:00:32
gracias, eso de $this ya lo sabia, la ultima parte en la que se llama a un metodo desde un atributo del objeto, era la que me hacia pensar, pero tambien paso por mi cabeza que ese atributo podria ser otro objeto declarado dentro del objeto principal, y simplemente se esta llamando a un metodo del primer mencionado, gracias