Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

error :should not be called statically, assuming $this from incompatible context. only on my machine

My team members wrote the model function calls in the controller statically such as:

$data = ModelName::functionName($param);

while it should be called dynamically such as:

$model = new Model();
$data = $model->functionName($param);

mostly all the calls are made statically. the code is working on the server and on their local machines except for mine. And the static calls are too many to fix without rewriting huge code base.

I always update my project via composer. My php version is 5.4.

anyone might know what this is about?

like image 673
tareq Avatar asked Feb 12 '23 01:02

tareq


1 Answers

You probably have PHP running with E_STRICT error reporting. Try turning it off and see if that fixed the problem - like turn of error reporting for E_STRICT errors. See this post on SO :

<?php
error_reporting(E_ALL ^ E_STRICT);

But I have to say, it's a bad idea to mix object-style and static-style calls. Function calls should explicitly show that a function is called in a static or object context, and act accordingly. Even if it's a little hard (how hard is making a grep on all the files and change wrong calls?), i'd recommend fixing your code first.

And also I recommend reading about static keyword in Object Oriented Programming - there's a reason to distinguish static and object method calls, and it's not a reason of "to make things easier", but more of a "to make things clearer", I'd say.

like image 91
Kleskowy Avatar answered Apr 26 '23 15:04

Kleskowy