metodos - ¿Cómo encadenar métodos en PHP?
php class example (4)
Coloque lo siguiente al final de cada método que desea hacer "encadenable":
return $this;
Esta pregunta ya tiene una respuesta aquí:
- ¿Encadenamiento de método PHP? 8 respuestas
jQuery me permite encadenar métodos. También recuerdo haber visto lo mismo en PHP, así que escribí esto:
class cat {
function meow() {
echo "meow!";
}
function purr() {
echo "purr!";
}
}
$kitty = new cat;
$kitty->meow()->purr();
No puedo hacer que la cadena funcione. Genera un error fatal justo después del maullido.
Para responder a su ejemplo de gato, los métodos de su gato deben devolver $this
, que es la instancia del objeto actual. Entonces puedes encadenar tus métodos:
class cat {
function meow() {
echo "meow!";
return $this;
}
function purr() {
echo "purr!";
return $this;
}
}
Ahora puedes hacer:
$kitty = new cat;
$kitty->meow()->purr();
Para obtener un artículo realmente útil sobre el tema, consulte aquí: http://www.talkphp.com/advanced-php-programming/1163-php5-method-chaining.html
Simplemente devuelva $this
de su método, es decir, (una referencia a) el objeto en sí:
class Foo()
{
function f()
{
// ...
return $this;
}
}
Ahora puedes encadenar en el contenido del corazón:
$x = new Foo;
$x->f()->f()->f();
sí, usando php 5 puedes devolver el objeto desde un método. Entonces al devolver $this
(que apunta al objeto actual), puede lograr el método de encadenamiento