在基类

时间:2017-04-12 19:34:34

标签: php phpdoc type-hinting

我有以下情况:

class Main {
   function get() {
       return new Query();
   }
}

class Order extends Main {
    public $id;
    public $name;
}

class Query {
    /**
     * @return Main
     */
    function execute() {
        /// some code here
        return $parsedObject;
    }
}

当我使用此代码执行()并获取Order对象(作为解析对象)时,我写这个:

$order = new Order();
$result = $order->get()->execute();
$result->id; /// typehint not works, cuz $result is type of Main, not more concrete type Order

所以我的问题是 - 有没有办法将一种类型的基类(抽象类,接口)类实现传递给方法,该方法是从该基类调用的,用于获取创建对象的漂亮类型。因为我可以使用自己的字段创建扩展Main类的User。但是调用new User() - > get() - > excute()会给我相同的结果 - Main类型的对象

1 个答案:

答案 0 :(得分:0)

你可以注释任何东西,这里是你注释的所有代码。

Type Hint

/**
 * Class Main
 */
class Main {

    /**
     * @return Query
     */
   function get() {
       return new Query();
   }
}

/**
 * Class Order
 */
class Order 
    extends Main {

    /** @var int */
    public $id;

    /** @var string */
    public $name;
}

/**
 * Class Query
 */
class Query {

    /**
     * @return Main
     */
    function execute() {
        /// some code here
        return $parsedObject;
    }
}