我可能在这里遗漏了一些明显的东西,因为这是其他 OOP 语言中的基本功能,但我正在努力使用 PHP 的方式来做到这一点。我知道 PHP 不是“真正的”OOP 语言,但仍然......
我所追求的是将实例化为派生类的对象转换为基类。类似于以下内容:
class Some{}
class SomeMock extends Some {}
function GetSomeMock(){
$mock = new SomeMock();
return (Some)$mock; //Syntax error here
}
我发现了一些关于将基类对象向下转换为派生的奇怪请求的问题,这可以通过一些讨厌的调整来实现,但是这个基本功能不必那么困难。我在这里想念什么?
编辑:似乎我想要实现的目标总是很重要。没问题。GetSomeMock() 是一个工厂方法,它将返回一个具有预期属性值的模拟对象存根(从基类派生,所有属性都预先填充在构造函数中)。然后我会将它与从数据库恢复的另一个基本类型的对象进行比较:
$this->assertEquals($mockObject, $realObject);
这会立即失败,因为 $mockObject 和 $realObject 是不同的类型。我可以想象有很多解决方法可以实现相同的目标,但我想尽可能简单。