2012-06-17 17 views
16

Examinando Zend Framework Encontré que cada método setter de cualquiera de su clase (de los que he examinado) devuelve la instancia de la clase en la que vive. No solo establece algún valor sino que establece un valor y también devuelve $ this. Por ejemplo:

/* Zend_Controller_Router */ 
public function setGlobalParam($name, $value) { 
    $this->_globalParams[$name] = $value; 
    return $this; 
} 

    /* Zend_Controller_Request */ 
public function setBaseUrl($baseUrl = null) { 
    // ... some code here ... 
    $this->_baseUrl = rtrim($baseUrl, '/'); 
    return $this; 
} 

    /* Zend_Controller_Action */ 
public function setFrontController(Zend_Controller_Front $front) { 
    $this->_frontController = $front; 
    return $this; 
} 

Y así sucesivamente. Todo organismo público devuelve $ this. Y no sólo los organismos, también hay algunos métodos de acción, que también devuelve $ esto:

public function addConfig(Zend_Config $config, $section = null) { 
    // ... some code here ... 
    return $this; 
} 

Lo que para esto se necesita? ¿Qué devuelve $ de esto? ¿Tiene algún significado especial?

+4

Devolución '$ (this)' significa que puede encadenar métodos, por ejemplo '$ myClass-> method_1 ($ x) -> method_2 ($ y)'. –

+1

Me di cuenta de esto en el pasado y nunca pensé en hacer la pregunta. Gracias, ahora tengo la respuesta. – RockyFord

Respuesta

37

El return $this permite el encadenamiento de métodos como:

$foo->bar('something')->baz()->myproperty 
4

Es por lo que las llamadas a métodos de un objeto puede ser "encadenado", como este.

$obj -> setFoo ('foo') -> setBar ('bar') -> setBaz ('baz') -> setFarble ('farble'); 
+0

Sé que este comentario fue realizado en 2012 y su objetivo principal es demostrar el uso de los métodos de cadena, pero para todos los principiantes que acaban de enterarse de esto: ¡NO coloquen todos esos espacios entre ellos! :) – bazzaretta

+0

@bazzaretta ¡No eres el jefe del espacio en blanco! – GordonM

Cuestiones relacionadas