Члены моей команды написали статические вызовы функций в контроллере, такие как:
$data = ModelName::functionName($param);
в то время как он должен вызываться динамически, например:
$model = new Model();
$data = $model->functionName($param);
в основном все звонки производятся статически. код работает на сервере и на их локальных машинах за исключением моего. И статических вызовов слишком много, чтобы их можно было исправить без переписывания огромной базы кода.
Я всегда обновляю свой проект через композитора. Моя версия php 5.4.
Кто-нибудь может знать, о чем это?
Возможно, у вас работает PHP E_STRICT
Отчет об ошибках. Попробуйте отключить его и посмотреть, не устранила ли это проблему — например, очередь сообщений об ошибках для E_STRICT
ошибки. Смотрите этот пост на SO :
<?php
error_reporting(E_ALL ^ E_STRICT);
Но я должен сказать, это плохая идея смешивать вызовы в стиле объекта и в стиле статики. Вызовы функций должны явно показывать, что функция вызывается в статическом или объектном контексте, и действовать соответственно. Даже если это немного сложно (насколько сложно сделать grep для всех файлов и изменить неправильные вызовы?), Я бы порекомендовал сначала исправить ваш код.
А также я рекомендую прочитать о статическое ключевое слово в объектно-ориентированном программировании — есть причина различать статические и объектные вызовы методов, и это не причина «сделать вещи проще», но больше «чтобы было понятнее», Я бы сказал.
Извините, но я не очень хорошо пишу по-английски, но я понимаю, что ваш вопрос таков:
вам нужно поставить статическую функцию:
static public function functionName () {
$data = ModelName :: functionName ($ param);
}
Это происходит через разные версии PHP
что серверы обрабатывают.
Я надеюсь, что я понял ваш вопрос и хорошо его перевёл, потому что мне показалась похожая ошибка, и я решил ее таким образом.