gpt4 book ai didi

model-view-controller - Cakephp:将 AppController 抽象到另一个层次,可能吗?

转载 作者:行者123 更新时间:2023-12-04 14:52:53 24 4
gpt4 key购买 nike

我想知道是否有可能在 AppController 和我的应用程序的其他 Controller 之间添加另一个抽象 Controller ?

这样我的 Controller ,例如UsersController 扩展了 SecureController
SecureController 扩展了 AppController。

此外,我希望能够让其他 Controller 直接扩展 AppController:
SomeNonSecureController 扩展了 AppController。

这是因为我当前的 AppController 在它的 beforeFilter 中有各种 Auth 和 ACL 的东西,但我也有不需要这些安全性东西的 Controller (在一切都需要安全性之前,没有添加新的规范)。
但是因为许多 Controller 确实需要它,所以将代码复制粘贴到所有需要的 Controller 是没有意义的。

我正在考虑将所有 beforeFilter 安全性内容放入 SecureController - 这样任何需要安全性的 Controller 都可以简单地扩展它,而其他 Controller 则直接从 AppController 继承。

你会如何继续做这样的事情?

提前致谢,
肯。

最佳答案

我的第一个想法是看看我是否可以将 beforeFilter 的一些功能抽象到一个组件中——记住组件也可以使用其他组件,只需将它们包含在组件的 $components 属性中,这样你就可以访问 AuthComponent 和 AclComponent 等。

如果这不合适,那么我会选择您的路线,为了做到这一点,只需 include('secure_controller.php');在它的文件中的单个 Controller 类声明之前。

我通过创建我在所有项目中使用的 BaseController 做了类似的事情,它提供了我所有的标准管理 CRUD 操作。然后我让我的 AppController 扩展它,它包含特定于应用程序的 Controller 范围的功能,然后各个 Controller 扩展它,最终实际上是空的。我所做的就是:

// 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 {} ?>

关于model-view-controller - Cakephp:将 AppController 抽象到另一个层次,可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1875831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com