2015-04-27 7 views
0

Я отлаживаю сайт Joomla, используя старый Joomla 2.5. При переходе к php 5.4 мы столкнулись с широко обсуждаемыми ошибками строгих стандартов. Большинство из них было легко исправить. У меня есть одна последняя ошибка, которая оказывается более сложной.PHP 5.4 Строгие стандарты Как сделать разрозненные, неупорядоченные параметры дочернего метода совместимыми с родительским методом?

Строгие стандарты: Декларация JCacheControllerView :: получить() должны быть совместимы с JCacheController :: получить ($ ID, $ группа = NULL) в /дома/XXXXXX/public_testing/библиотеки/Joomla/кэш/контроллер/view.php на линии 137

Исследования показывают советы, такие как это: Declaration of Methods should be Compatible with Parent Methods in PHP

JCacheController определяет

public function get($id, $group = null) 

JCacheControllerView расширяет JCacheController и определяет:

public function get(&$view, $method, $id = false, $wrkarounds = true) 

Так что я попытался изменить заявление, чтобы иметь одни и те же параметры и те же значение по умолчанию: JCacheController определяет

public function get($id=false, $group = null, &$view = null, $method = null, $wrkarounds = true) 

JCacheControllerView расширяет JCacheController и определяет:

public function get(&$view = null, $method = null, $id = false, $wrkarounds = true, $group = null) 

Какие результаты в:

Строгие стандарты: Декларация о JCacheControllerView :: получить() должны быть совместимы с JCacheController :: получить ($ ID = ложь, $ группа = NULL, & $ посмотреть = NULL, $ метод = NULL, $ wrkarounds = истина) в /home/freedibl/public_testing/libraries/joomla/cache/controller/view.php на линии 137

Может быть, это потому, что параметры не в том же самом заказ? Как я могу исправить это, не изменяя исходные вызовы методов? Оба метода широко используются, и было бы сложно изменить каждый вызов на любой из них в joomla.

ответ

0

Порядок параметров не имеет значения для интерпретатора PHP как таковой, поскольку он не проверяет совместимость параметров по имени. Но у вас разные параметры . Некоторые из них являются ссылками, а некоторые - переменными - это делает заявления несовместимыми.

Итак, вы можете исправить эту проблему, изменив порядок параметров, чтобы типы совпадали в обеих декларациях.

Есть $view параметр или объект простого типа? Если это объект, вам, вероятно, не нужно передавать его как ссылку вообще.

+0

Ошибка перестала отображаться (мне неудобно возникать ошибки, это проблема Joomla?). Если он снова появится, я обязательно удалю ссылку. Спасибо за вашу помощь. – slick