Я не php парень, но это звучит так же, как Java, где это разрешено, но не рекомендуется.
Если он статический, я бы настоятельно рекомендовал бы вызывать его только статическим способом. В противном случае он выглядит как будто это зависит от состояния объекта, для которого вы якобы его вызываете.
На Java лучшим примером этого является Thread.sleep()
. Это статический метод, который всегда переводит текущий поток в спящий режим. Но посмотрите на этот код:
Thread t = new Thread(someTask);
t.start();
t.sleep(1000);
Что это выглядит как этот код делает? Кажется, он помещает другой поток в спящий режим, тогда как на самом деле это будет текущий поток, который спит. Когда вы меняете его на простой статический вызов, это становится более очевидным:
Thread.sleep(1000);
Это не относится к t
, поэтому должно соответствовать текущему потоку.
Если в php нет чего-то особенного, когда вызов статического метода через переменную дает вам какой-то полиморфизм, я советую вам вызывать его статическим способом. Тот факт, что строгий режим говорит вам сделать это, довольно сильный намек, IMO:)