【发布时间】:2018-07-09 11:47:18
【问题描述】:
我确实有一个名为 Jsonable 的接口。
interface Jsonabe{
public function toJson();
}
我确实有两个实现接口的类。
class facebookTransformer implements Jsonable{
protected $facebookHandler;
public function __construct(){
$this->facebookHandler = new FacebookHandler();
}
public function toJson(){
}
}
二等:
class googleTransformer implements Jsonable{
protected $googleHandler;
public function __construct(){
$this->googleHandler = new GoogleHandler();
}
public function toJson(){
}
}
现在有了实现的接口,我知道所有新类都将遵循该接口。我的问题是我可以以某种方式强制所有实现接口的类也定义属性并通过构造函数初始化它吗?或者我在接口中加一个构造函数可以吗?
我想确保所有其他类都具有$handler 属性。
【问题讨论】:
-
如果你创建一个实现这个接口的抽象类然后使用它来扩展其他类,你可以拥有一个属性,但是如果你想要严格的接口,那么你没有任何解决方案,只是强制另一种方法应该得到它,但你也不能确定它会被正确实施
-
@Edwin 实际上我在考虑一个抽象类,它强制它拥有属性但属性仍然可以为空,它会在运行时崩溃
-
不提供空构造函数并强制处理程序给它,那么你就没有这个问题