CakePHP PaginationRecallComponent,Strict(2048):PaginationRecallComponent :: initialize()的声明

时间:2013-11-25 06:24:34

标签: cakephp initialization components

我试图在

中插入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

1 个答案:

答案 0 :(得分:5)

您收到此错误是因为initialize类中PaginationRecallComponent方法的签名与其父类中的签名不同。

如果您查看代码,您会在Cake/Controller/Component.php中看到签名为:

public function initialize(Controller $controller)

而在PaginationRecallComponent中则是:

function initialize(&$controller)

在第一种情况下,$controller参数必须是Controller的实例,而在第二种情况下,没有这样的约束。要摆脱错误,您只需将此约束添加到initialize的{​​{1}}方法的签名中。