Как исправить ошибку “Non-static method <method_name> should not be called statically”

117
05 декабря 2018, 01:30

Существует проект на YII2, который размещен на хостинге и работает без особых проблем. При развертывании на локальном сервере этого проекта при отображении главной страницы выскакивает такая ошибка:

Проблема в том, что вызывается нестатический метод, возвращающий в свою очередь результат работы другого статического метода.

    public function findRedirectByUrl($url)
    {
        return self::findOne(['old_url' => $url]);
    }

Я читал, что это исключение может выбрасываться если, например, версия PHP сменена на более новую, это где-то есть в описании перехода на другую версию в разделе "Изменения, ломающие обратную совместимость". Но проблема ясна, вопрос в том, возможно ли не исправляя код в проекте игнорировать данную ошибку. На продакшене все работает с версией PHP такой же как и на локальном сервере. Есть ли какие-то параметры, например в php.ini, способные исправить это?

Answer 1

Можно поступить так:

$obj = new Redirects();
$redirects = $obj->findRedirectByUrl($url);

если нужно однократно, то можно "укоротить" запись

$redirects = (new Redirects())->findRedirectByUrl($url);

Но проблема ясна, вопрос в том, возможно ли не исправляя код в проекте игнорировать данную ошибку.

В данном случае - можете, пока версия PHP позволяет. Поскольку "внутри" все равно вызывается статический метод и логика не будет нарушена. Ну а по "правильному" так делать конечно нельзя

READ ALSO
Кодировка парсера didom

Кодировка парсера didom

использую эту библиотеку, как парсер https://githubcom/Imangazaliev/DiDOM Мне нужно получить расстояние от определенного адреса до ближайшего метро

170
Как изменить положение текста в php

Как изменить положение текста в php

как текст перенести на середину?

181
init is not defined at onload

init is not defined at onload

Прошу помощиКонсоль стала ругаться на <body onload="init ();">

356
Как разрабатывать компоненты в Joomla! удобно?

Как разрабатывать компоненты в Joomla! удобно?

Есть проект на Joomla!, проект находится под управлением git и хотелось бы чтобы при деплое проекта на реальный сайт не нужно было устанавливать...

140