我有一个前端控制器,实例化如下:
$request = new FrontController();
$request->route();
然后该route()
方法根据请求根据需要动态调用适当的控制器。
现在(我认为)我希望我的所有控制器都扩展 FrontController 以便它们都可以访问一组共享的方法和属性,但我不希望它们继承该route()
方法,因为这可能会导致无限环形。但是,如果该route()
方法被标记为私有,那么我就无法如上所示实例化该对象。
我找到的唯一解决方案是self::route()
从 FrontController 的构造函数中调用,然后在每个子控制器中定义一个空白构造函数。就是觉得很草率。
有没有办法从继承中排除某些方法而不将它们标记为私有?还是应该换个角度看问题?