Статический вызов нестатического метода в PHP является устаревшим поведением с версии 7.0 и вызывает предупреждение E_DEPRECATED
.Это означает, что поддержка этого поведения работает, но может быть (и, вероятно, будет) удалена в будущей версии.
Это поведение вызвало предупреждение E_STRICT
в версиях PHP 5. *.
Изменение собственного AJAXChatTemplate::getContent()
метода на static не работает, потому что он использует $this
, что имеет смысл только в контексте экземпляра класса.Поэтому он вызывает фатальную ошибку в статическом контексте.
Вы используете библиотеку AJAX-Chat - вы не указали, какую версию используете, но есть проблема , в котором обсуждается ошибка, с которой вы столкнулись.
В соответствии с этой сообщенной проблемой был сделан коммит в последние версии этой библиотеки, чтобы изменить это статическое поведение.
Чтобы решить вашу проблему, у вас есть два варианта:
Продолжить использовать версию AJAX-Chat, которую вы в данный момент установили
Просто используйтеAJAXChatFileSystem::getFileContents()
не статично.Создайте экземпляр класса и используйте его, изменив свой метод getContent()
следующим образом:
function getContent()
{
if (!$this->_content) {
$ajaxChatFileSystem = new AJAXChatFileSystem();
$this->_content = $ajaxChatFileSystem->getFileContents($this->_templateFile);
}
return $this->_content;
}
Обновите до последней версии этой библиотеки и используйте статический метод
Похоже, что нет списка изменений, поэтому вы должны проверять свой код везде, где вы используете AJAX-Chat, чтобы убедиться, что нет критических изменений.
Технически, у вас есть третий выбор: так какэто предупреждение E_DEPRECATED
, означающее, что функциональность помечена для удаления в будущем - вы можете спокойно проигнорировать это предупреждение, на данный момент .
E_DEPRECATED
предупреждений (как в случае свсе уведомления, предупреждения и ошибки) должны быть отключены для отображения пользователю в рабочем коде.
Однако я рекомендую , а не , так как ваши журналы будут заполнены E_DEPRECATED
предупреждениями.Более того, как уже упоминалось, в будущих версиях PHP может быть устранена поддержка статического вызова нестатических методов.
Надеюсь, это поможет:)