Cakephp beforeFilter vs构造函数

Dhi*_*nta 11 php cakephp

我是cakephp的新手.我发现了一种很常用的方法

beforeFilter() 
Run Code Online (Sandbox Code Playgroud)

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

parent::beforeFilter();
Run Code Online (Sandbox Code Playgroud)

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

public function __construct() {
   // Code here
} 
Run Code Online (Sandbox Code Playgroud)

代替

public function beforeFilter() {
}
Run Code Online (Sandbox Code Playgroud)

谢谢

pud*_*und 7

construct()用于构造,加载你需要的东西.

__construct()public构造函数

参数: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()方法以查找缺少的操作和scaffolded操作.

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

通常你不需要一个构造函数,因为当遵循CakePHP约定时,只有极少数情况下你实际上没有其他选项而不是"强制"手动加载东西......


bur*_*zum 5

只需阅读Controller类中方法的说明即可:

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

当访问URL并触发控制器的动作时,Dispatcher会调用BeforeFilter:

  1. 建设者
  2. BeforeFilter
  3. 行动
  4. 渲染前
  5. AfterFilter

在极少数情况下(至少我不记得),我不得不在构造函数中做一些事情。这也是一个好的建筑设计。构造函数只是初始化事物,而beforeFilter允许您配置(例如,大多数是组件)之前初始化过的东西。