我想知道这在 php 的面向对象编程中是否可行。我有一个控制器
class BaseController extends Controller{
/**
* @Route("/sample", name="sample")
*/
public function postSampleAction(Request $request){
}
}
我有一个名为ProductEvent和PriceEvent
class ProductEvent extends BaseController{
public function checkEvent(){
echo "product event";
}
}
class PriceEvent extends BaseController{
public function checkEvent(){
echo "price event";
}
}
如您所见,我扩展了基本控制器。我想发生的是我需要将checkEvent()
放到基本控制器中postSampleActioin()
class BaseController extends Controller{
/**
* @Route("/sample", name="sample")
*/
public function postSampleAction(Request $request){
$this->checkEvent();
}
}
我不知道这是否是一种正确的方法。我想测试这是否会回显checkEvent()
函数。
对不起,我的错。我忘了添加我使用的框架。我为此使用了symfony。
你想BaseController
成为一个不完整的抽象类,需要继承并在那里实现checkEvent
方法:
abstract class BaseController extends Controller {
public function postSampleAction(Request $request) {
$this->checkEvent();
}
abstract public function checkEvent();
}
你现在不能单独实例化BaseController
,任何继承的非抽象类都需要实现checkEvent
;这给了你所需的类型安全性,允许你在postSampleAction
中依赖checkEvent
。