我是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)
谢谢
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约定时,只有极少数情况下你实际上没有其他选项而不是"强制"手动加载东西......
只需阅读Controller类中方法的说明即可:
在控制器动作之前调用。您可以使用此方法配置和自定义组件,或执行在每次控制器操作之前需要发生的逻辑。
当访问URL并触发控制器的动作时,Dispatcher会调用BeforeFilter:
在极少数情况下(至少我不记得),我不得不在构造函数中做一些事情。这也是一个好的建筑设计。构造函数只是初始化事物,而beforeFilter允许您配置(例如,大多数是组件)之前初始化过的东西。