Ken*_*Ken 6 oop model-view-controller abstraction controller cakephp
我想知道是否有可能在AppController和我的应用程序的其他控制器之间添加另一个抽象控制器?
因此我的控制器,例如UsersController扩展了SecureController,SecureController扩展了AppController.
此外,我希望能够让其他控制器直接扩展AppController:SomeNonSecureController扩展AppController.
这是因为我当前的AppController在其beforeFilter中有各种各样的Auth和ACL内容,但我也有不需要安全性的控制器(在所有需要安全性之前,没有添加新的规范)..但是因为一些许多控制器确实需要它,将代码复制粘贴到所有需要的控制器是没有意义的.
我想把所有的beforeFilter安全内容都安装到SecureController中 - 这样任何需要安全性的控制器都会简单地扩展它,而其他控制器直接从AppController继承.
你会如何继续做这样的事情?
谢谢,肯.
我的第一个想法是看看我是否可以将beforeFilter中的一些功能抽象为一个组件 - 记住组件也可以使用其他组件,只需将它们包含在组件的$ components属性中,这样就可以访问AuthComponent和AclComponent等.
如果这不合适那么我会去你的路线,为了做到这一点,只需包括('secure_controller.php'); 在你的文件中的单个控制器类声明之前.
我通过创建一个我在所有项目中使用的BaseController做了类似的事情,它提供了我标准的所有管理CRUD操作.然后我让我的AppController扩展它包含特定于应用程序,控制器范围的功能,然后各个控制器扩展它,并最终实际上是空的.我所做的就是:
// app/base_controller.php
<?php class BaseController extends Controller {} ?>
// app/app_controller.php
<?php
include('base_controller.php');
class AppController extends BaseController {}
?>
// app/controllers/my_controller.php
<?php class MyController extends AppController {} ?>
Run Code Online (Sandbox Code Playgroud)