2015-05-27 2 views
1

Это вопрос, связанный с пользовательской CMS, которую мы взяли. Мы переместили серверы, а версия PHP изменилась с 5.3.8 на 5.4.1. С тех пор мы не можем получить CMS работать и получать эту ошибку:

Strict Standards: Non-static method Vox_Model_Setting::getMapper() should not be called statically, assuming $this from incompatible context in /var/www/vhosts/ds8760.dedicated.turbodns.co.uk/eera-bioenergy.com/application/modules/users/models/Role.php on line 71 

Линия 71 говорит:

$settings = new Vox_Model_Setting(Vox_Model_Setting::getMapper()->findOne(array('module' => 'users'))); 

Может кто-нибудь посоветовать, что может быть неправильно?

Спасибо :)

редактировать: добавлять getMapper()

public function getMapper() 
{ 
    if (null === self::$__mapper) { 
     self::setMapper(new Vox_Model_Setting_Mapper()); 
    } 
    return self::$__mapper;  
} 
+0

Проверьте тип функции getMapper() '. Ошибка говорит, что это не 'статический', а вы называете его статическим. Вы должны создать '' object' из Vox_Model_Setting' класса перед вызовом его не-статические методы –

+0

Привет, это getMapper() общественная функция getMapper() { \t если (нуль === самостоятельно :: $ __mapper) { \t \t self :: setMapper (новый Vox_Model_Setting_Mapper()); \t} \t return self: $ __ mapper; \t } – user2069576

ответ

3

Просто изменить тип метода, добавьте ключевое слово static и называют, как вы делаете сейчас.

public function getMapper() { 
if (null === self::$__mapper) 
{ 
    self::setMapper(new Vox_Model_Setting_Mapper()); 
} 
return self::$__mapper;  
} 

в

public static function getMapper() { # see extra static keyword 
if (null === self::$__mapper) 
{ 
    self::setMapper(new Vox_Model_Setting_Mapper()); 
} 
return self::$__mapper;  
} 
0

PHP 5.4 поставляется с жесткими стандартами замечает активна по умолчанию, уведомления, которые выключены по умолчанию в 5.3, и, вероятно, были проигнорированы (потому что большинство госзакупках., Как правило, делать это, даже хотя это плохая практика).

Для быстрого решения проблемы их отключить их (вы можете использовать это):

error_reporting (E_ALL^​​E_STRICT);

Или это в HTAccess:

php_value error_reporting 30711

Тем не менее, я настоятельно рекомендую вам исправить их один за другим. То, что вы указываете там, можно устранить, добавив статическую функцию getMapper(), но это может затронуть другие части ваших скриптов (там, где их можно назвать не статически).

Смежные вопросы

 Смежные вопросы