¿Cómo marque un método como "devuelve una instancia de la clase actual" en mi phpDoc?
En el siguiente ejemplo mi IDE (Netbeans) verá que setSomething siempre devuelve un objeto foo
.
Pero eso no es cierto si extiendo el objeto - devolverá $this
, que en el segundo ejemplo es un objeto bar
no un objeto foo
.
class foo {
protected $_value = null;
/**
* Set something
*
* @param string $value the value
* @return foo
*/
public function setSomething($value) {
$this->_value = $value;
return $this;
}
}
$foo = new foo();
$out = $foo->setSomething();
Así fina - setSomething
devuelve un foo
- pero en el siguiente ejemplo, devuelve un bar
..:
class bar extends foo {
public function someOtherMethod(){}
}
$bar = new bar();
$out = $bar->setSomething();
$out->someOtherMethod(); // <-- Here, Netbeans will think $out
// is a foo, so doesn't see this other
// method in $out's code-completion
... Sería genial para resolver esto como para mí, la finalización del código es un aumento de velocidad masivo.
¿Alguien tiene un truco ingenioso, o mejor aún, una forma adecuada de documentar esto con phpDoc?
Eso sería culpa de NetBeans, ya que en PHP no hay subidas y bajadas de un objeto. – BoltClock
Creo que esto es probablemente lo más cercano a la respuesta (es decir, no puedo hacer esto sin un compromiso horrible). Supongo que en Java tendría que actualizar el resultado de 'setSomething' en una' barra' antes de poder usar 'someOtherMethod' en él. – ledneb