严格标准:非静态方法(joomla和roksprocket)

时间:2013-05-14 00:31:24

标签: php joomla strict

Strict Standards: Non-static method K2ModelItemlist::getCategoryTree() should not be called statically, assuming $this from incompatible context in C:\xampp\htdocs\virgin\components\com_roksprocket\lib\RokSprocket\Provider\K2\Filter.php on line 151

所有

我有这个错误...我正在使用RokSprocket,Joomla并收到上述错误......它似乎起源于

protected function category($data)
{
if(file_exists(JPATH_SITE.'/components/com_k2/models/itemlist.php'))
require_once (JPATH_SITE.'/components/com_k2/models/itemlist.php');
$wheres = array();
foreach($data as $match){
$categories = K2ModelItemlist::getCategoryTree($match);

任何想法如何解决这个问题。

2 个答案:

答案 0 :(得分:2)

使Joomla符合严格的要求仍在进行中。核心在这条道路上走了很长的路,但许多扩展开发人员仍然不了解当前的最佳实践。

开发环境

保持最大error_level,只需在function关键字前添加public static即可修复损坏的代码。您将在更新时放松,但您的VCS将帮助您快速重新修复。

生产环境

在生产系统上,error_reporting可以降低到不包括严格警告。配置服务器以记录错误而不是显示它们。

答案 1 :(得分:0)

K2ModelItemlist::getCategoryTree未定义为静态。那里有你的错误信息。

是的,您可以在文件components/com_k2/models/itemlist.php

中将其定义为静态
function getCategoryTree($categories) // line 576

替换为

static function getCategoryTree($categories)

但是你必须记住你自己的一些外来组件,因为升级后会丢失它。