vio*_*ium 7 php inheritance interface
我有界面:
interface AbstractMapper
{
public function objectToArray(ActiveRecordBase $object);
}
Run Code Online (Sandbox Code Playgroud)
和课程:
class ActiveRecordBase
{
...
}
class Product extends ActiveRecordBase
{
...
}
Run Code Online (Sandbox Code Playgroud)
========
但我不能这样做:
interface ExactMapper implements AbstractMapper
{
public function objectToArray(Product $object);
}
Run Code Online (Sandbox Code Playgroud)
或这个:
interface ExactMapper extends AbstractMapper
{
public function objectToArray(Product $object);
}
Run Code Online (Sandbox Code Playgroud)
我有错误" 声明必须兼容 "
那么,有没有办法在PHP中执行此操作?
dec*_*eze 13
不,必须准确实现接口.如果将实现限制为更具体的子类,则它不是相同的接口/签名.PHP没有泛型或类似的机制.
您总是可以手动签入代码,当然:
if (!($object instanceof Product)) {
throw new InvalidArgumentException;
}
Run Code Online (Sandbox Code Playgroud)