我想知道在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";
}
}
你可以看到我扩展了BaseController。我想要发生的是我需要将checkEvent()
放到postSampleActioin()
class BaseController extends Controller{
/**
* @Route("/sample", name="sample")
*/
public function postSampleAction(Request $request){
$this->checkEvent();
}
}
我不知道这是否是正确的方法。我想测试它是否会回显checkEvent()
函数。
抱歉我的错误。我忘了添加我使用的框架。我为此使用了symfony。
答案 0 :(得分:1)
这意味着你想让BaseController
成为不完整的abstract 类,需要继承并在那里实现checkEvent
方法:
abstract class BaseController extends Controller {
public function postSampleAction(Request $request) {
$this->checkEvent();
}
abstract public function checkEvent();
}
您现在无法自己实例化BaseController
,任何继承的非抽象类都需要实现checkEvent
;这为您提供了所需的类型安全性,使您可以依赖checkEvent
中的postSampleAction
。