我有以下情况:
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类型的对象
答案 0 :(得分:0)
你可以注释任何东西,这里是你注释的所有代码。
/**
* 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;
}
}