PHPDoc y enlace tardío (estático o dinámico)

La mayoría de los IDE de PHP confían en phpdoc para obtener pistas sobre el tipo de expresión. Sin embargo, uso con frecuencia este patrón, que no parece estar cubierto:

class Control {
    private $label = '';

    /** @return ??? */
    public static function Make(){ return new static(); }

    /** @return ??? */
    public function WithLabel($value){  $this->label = $value;  return $this;  }

    /** @return void */
    public function Render(){ /* ... */ }
}

class Textbox extends Control {
   private $text = '';

    /** @return ??? */
    public function WithText($text){  $this->width = $text;  return $this;  }
}

Ahora puedo usar las clases como esta:

Textbox::Make()           // <-- late static binding, returns Textbox
   ->WithLabel('foo')     // <-- late dynamic binding, returns Textbox
   ->WithText('bar')      // <-- normal binding, returns Textbox
   ->Render();

¿Hay alguna forma de reemplazar los '???' s con algo para que la información de escritura sea correcta?

Respuestas a la pregunta(3)

Su respuesta a la pregunta