Это один из тех моментов, когда «мой код работает, я не знаю почему».
У меня есть метод в экземпляре класса, который статически вызывает метод того, что в основном является статическим классом. Я говорю «в основном», потому что, кодируя его, я не стал объявлять методы класса исключительно статическими. Рассматриваемый метод относится к первому классу, но я слепо скопировал / вставил код (который изначально был внутренним) и не совсем обновил все, поэтому $ this-> остался, хотя метод не принадлежит классу, к которому он относится в.
Итак, в основном у меня было это:
class MyClass{
public function callOtherMethod(){
OtherClass::otherMethod();
}
public function myMethod(){
echo 'Tada!';
}
}
class OtherClass{
public function otherMethod(){
echo get_class($this);
$this->myMethod();
}
}
$thing = new MyClass();
$thing->callOtherMethod();
Это как-то работало без проблем, пока я не сделал некоторую очистку и явно объявил методы OtherClass статическими, какими они и должны быть. Все работало, потому что по какой-то причине я не знал, что $ this при использовании в OtherClass вместо этого ссылается на экземпляр объекта, который его вызвал (т.е. MyClass).
Я не думал, что это должно быть возможно, не так ли? Я знаю, что это плохие стандарты кодирования, и я делаю изменения, чтобы избежать этого, но я нашел это действительно, очень странным.
Задача ещё не решена.
Других решений пока нет …