我是cakephp的新手。我找到了一个很常用的方法
beforeFilter()
我的问题是,它与类构造函数有何不同? 如果我打电话
怎么办?parent::beforeFilter();
来自构造函数而不是beforeFilter(); 我只是想知道如果我在
中编写相同的代码public function __construct() {
// Code here
}
而不是
public function beforeFilter() {
}
由于
答案 0 :(得分:7)
construct()用于构造,加载你需要的东西。
__ construct()public 构造
参数: ComponentCollection $ collection 此组件可用于延迟加载其组件的ComponentCollection
http://api.cakephp.org/2.3/class-Component.html#___construct
beforeFilter()执行在任何其他操作之前需要执行的函数
控制器:: 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约定时,只有很少的场景,你实际上没有其他选择,而不是“强制”手动加载...
答案 1 :(得分:5)
只需阅读Controller类中方法的说明:
在控制器操作之前调用。您可以使用此方法 配置和自定义组件或执行需要的逻辑 在每个控制器动作之前发生。
当访问URL并触发控制器的操作时,Dispatcher调用BeforeFilter:
我很少在构造函数中执行某些操作(至少我不记得了)。这也是一个很好的建筑设计。构造函数只是初始化东西,而beforeFilter允许你配置(例如主要是组件)之前初始化的内容。
答案 2 :(得分:0)
您可以在https://book.cakephp.org/1.2/en/The-Manual/Developing-with-CakePHP/Controllers.html#the-app-controller的官方CakePHP文档中找到一些相关的定义:
“回调:CakePHP控制器配有可用于在呈现控制器动作之前或之后插入逻辑的回调.forefilter():此功能在控制器中的每个动作之前执行。这是检查一个方便的地方活动会话或检查用户权限。“