12

我是 cakephp 新手。我发现了一个广泛使用的方法

beforeFilter() 

我的问题是,它与类构造函数有何不同?如果我打电话怎么办

parent::beforeFilter();

从构造函数而不是 beforeFilter(); 我只想知道如果我写相同的代码怎么办

public function __construct() {
   // Code here
} 

代替

public function beforeFilter() {
}

谢谢

4

3 回答 3

8

construct() 用于构建,加载您需要的东西。

__construct() 公共构造函数

参数: ComponentCollection $collection 此组件可用于延迟加载其组件的 ComponentCollection

http://api.cakephp.org/2.3/class-Component.html#___construct


beforeFilter() 执行您需要在任何其他操作之前执行的功能

Controller::beforeFilter() 该函数在控制器中的每个动作之前执行。这是检查活动会话或检查用户权限的方便场所。

http://api.cakephp.org/2.3/class-Controller.html#_beforeFilter

在控制器操作之前调用。您可以使用此方法来配置和自定义组件或执行每个控制器操作之前需要发生的逻辑。

注意: beforeFilter() 方法将针对缺少的动作和脚手架动作调用。

http://book.cakephp.org/2.0/en/controllers.html#request-life-cycle-callbacks

通常您不需要构造函数,因为当遵循 CakePHP 约定时,只有极少数情况下您实际上别无选择,只能手动“强制”加载某些内容......

于 2013-07-26T13:06:54.070 回答
6

只需阅读Controller类中方法的描述:

在控制器操作之前调用。您可以使用此方法来配置和自定义组件或执行每个控制器操作之前需要发生的逻辑。

当访问 URL 并触发控制器的操作时,调度程序会调用 BeforeFilter:

  1. 构造函数
  2. 过滤前
  3. 行动
  4. 渲染前
  5. 后过滤器

很少有情况(至少我不记得)我必须在构造函数中做某事。这也是一个很好的建筑设计。构造函数只是初始化事物,而 beforeFilter 允许您配置(例如主要是组件)之前初始化的内容。

于 2013-07-26T13:01:35.560 回答
1

您可以在https://book.cakephp.org/1.2/en/The-Manual/Developing-with-CakePHP/Controllers.html#the-app-controller的官方 CakePHP 文档中找到一些相关定义:

“回调:CakePHP 控制器配备了回调,您可以在呈现控制器操作之前或之后插入逻辑。beforeFilter():此函数在控制器中的每个操作之前执行。它是检查活动会话或检查用户权限。”

于 2017-06-16T15:41:52.193 回答