我试图在
中插入PaginationRecallComponent(http://bakery.cakephp.org/articles/Zaphod/2012/03/27/paginationrecall_for_cakephp_2_x)App - >控制器 - >组件 - > PaginationRecallComponent.php
UserController中: public $ components = array('PaginationRecall');
为什么我收到以下错误:
Strict (2048): Declaration of PaginationRecallComponent::initialize() should be compatible with Component::initialize(Controller $controller) [APP/Controller/Component/PaginationRecallComponent.php, line 46]
Code Context
App::load() - CORE/Cake/Core/App.php, line 567
App::load() - CORE/Cake/Core/App.php, line 567
spl_autoload_call - [internal], line ??
class_exists - [internal], line ??
ComponentCollection::load() - CORE/Cake/Controller/ComponentCollection.php, line 110
ComponentCollection::init() - CORE/Cake/Controller/ComponentCollection.php, line 53
Controller::constructClasses() - CORE/Cake/Controller/Controller.php, line 652
Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 183
Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 162
[main] - APP/webroot/index.php, line 97
CakePHP 2.4.2
答案 0 :(得分:5)
您收到此错误是因为initialize
类中PaginationRecallComponent
方法的签名与其父类中的签名不同。
如果您查看代码,您会在Cake/Controller/Component.php
中看到签名为:
public function initialize(Controller $controller)
而在PaginationRecallComponent
中则是:
function initialize(&$controller)
在第一种情况下,$controller
参数必须是Controller
的实例,而在第二种情况下,没有这样的约束。要摆脱错误,您只需将此约束添加到initialize
的{{1}}方法的签名中。