How to document this?

For example, the following code:

abstract class A {
  public $strClassName;

  public function __construct($strClassName) { 
    $this->strClassName = $strClassName;
   * @return mixed
  public function get() {
    return new $this->strClassName();

class B extends A {
  public function __construct() {

class C {
  public function hello() {
    return "Hello world!";

$objB = new B();
$objC = $objB->get();
print $objC->hello(); // Output 'Hello world!'

The return form in the function get() is different in class B. In class A it is 'mixed', in class B it is 'C'. So the correct documentation should be:

  * @return C

But I don't overwrite that function in class B, so I have no place to put that documentation. As a result the AutoComplete doesn't know what the return form of B::get() is.
Is there a solution for this?


Add "@method C get()" PHPDOC annotation (mind the more specific return type) to class B.


Please sign in to leave a comment.