【发布时间】:2018-04-27 12:58:08
【问题描述】:
我有一个类,VehicleManager。 此类管理车辆类型对象的生命周期和调用。 Vehicles 充当模块并扩展了抽象的 Vehicle 基类。
所以,如果你制作一辆自行车,你永远不会做 new Bike(),你会做 VehicleManager->create('Bike',5);
我的问题是,我希望每辆车的构造都接收预定义的参数,并执行一些预定义的操作,所以我的 Vehicle 基类有一个私有的最终构造函数。
例子:
final private function __construct(Array $myCustomData){
$this->customData = $myCustomData;
}
但我仍然希望每种车辆类型都有一些自定义初始化
所以做了之后
$newVehicle = new $ClassName($myCustomData);
我在做
$newVehicle->initialize();
这可以接受吗?谢谢
【问题讨论】:
-
你知道你可以覆盖
__construct并且仍然调用基本实现吗? stackoverflow.com/questions/1557608/… -
您能详细说明一下吗? __construct 方法在我的基类中是最终的。我正在检查提供的类是否事先扩展了它。
-
好吧,你可以让它不是最终的......我链接的问题包含很多关于这个的想法。我只是想我会把它作为替代品,这可能适合您的需求。
标签: php oop design-patterns dependency-injection constructor