自PHP 5.4以来,在CakePHP 2.1中找不到类“X”
我已经将我的机器从
PHP 5.3更新到
PHP 5.4,我的CakePHP(版本2.1.1)应用程序不断收到这些错误:
等等. 错误实际上没用,因为错误的LINE和FILE总是声明类声明的结束括号. 经过大量的搜索,我设法通过添加适当的公共/私有函数声明和强参数类型来解决一些错误,A.K.A.: function beforeSave($Model) {} //becomes public function beforeSave(Model $Model){} 解决方法
转移到PHP5.4后,您必须清除代码中的许多“不良做法”.
扩展方法中的强类型参数定义 这意味着您必须编写方法在变量名称之前接收的对象的类.这仅适用于替换父类方法的方法,而不适用于所有方法.如果不确定,只需检查核心文件或API中父类的方法声明. // Behavior code public function afterSave(Model $model,$created) //GOOD function aferSave($model) //NOT GOOD // Component code public function shutdown(Controller $Controller) // GOOD function shutdown($Controller) // BAD 删除“通过引用传递呼叫时间” 我见过很多人在函数BY REFERENCE中传递arround Controller和Model对象: function beforeSave(&$Model) 这会引发错误并且错误. 在扩展方法中声明所有方法参数 如果覆盖父类的方法,则应在函数定义中声明所有函数参数.如果缺少参数,则会出现错误. 例: SomeBehavior extends ModelBehavior public function afterSave(Model $Model){ } //WRONG,but works in 5.3 public function afterSave(Model $Model,$created){ } //RIGHT,works everwhere :) 添加App :: load()以加载依赖项 总是很好检查你的类是否真的可用,所以请仔细检查你是否在文件开头的App::load()中加载了所有依赖的类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |