如何在OOP symfony中继承扩展控制器的功能

时间:2018-04-10 07:42:07

标签: php symfony oop

我想知道在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()

中的BaseController中
class BaseController extends Controller{

       /**
       * @Route("/sample", name="sample")
       */
       public function postSampleAction(Request $request){
         $this->checkEvent();
       }
    }

我不知道这是否是正确的方法。我想测试它是否会回显checkEvent()函数。

抱歉我的错误。我忘了添加我使用的框架。我为此使用了symfony。

1 个答案:

答案 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