【发布时间】:2017-12-14 17:48:11
【问题描述】:
我有一个基类,它有几个继承自它的类。
class Pet{
...
}
class Dog extends Pet{
...
}
class Cat extends Pet{
...
}
然后我有另一个使用这个类的类
class Person{
/** @var Pet */
public $pet;
}
这些类基于我将收到的一些 JSON 对象。 JSON 对象可以包含 Dog 对象或 Cat 对象。我运行switch 语句来确定它在运行时是哪个并适当地处理它。但是,我想通过 PHPDoc 进行类型提示,以确定它是猫还是狗。我一直无法弄清楚如何在运行时指定它的类型已从Pet 更改为Dog。这不起作用 - 它仍然认为这是一个普通的旧 Pet 对象。
$pet = json_decode($jsonObj);
if($pet->type == "dog"){
/** @var Dog */
$pet = $pet;
}
知道如何在运行时使用 PHPDoc 将类型更改为子类型吗?
【问题讨论】: