Я работал над некоторым PHP вокруг ключевого слова «static ::» и столкнулся с проблемой, когда слишком много статических вызовов приводят к путанице относительно того, где находится метод.Проще показать это на примере:
class Class1
{
function Test()
{
return Class2::Test();
}
}
class Class2
{
function Test()
{
return static::Test2();
}
function Test2()
{
return true;
}
}
/* test 1: calling Class1::Test() statically results in expected call to Class2::Test2() */
echo "test 1: " . Class1::Test() . "\n";
/* test 2: instantiating the class causes Class1::Test2() to be called, which does not exist */
$Class1 = new Class1();
echo "test 2: " . $Class1->Test() . "\n";
Я хотел связаться с экспертами по PHP, которые могут сказать мне, может ли это быть подлинной ошибкой или простым неправильным использованием языка.
Я понимаю, что установка может быть странной со всеми статическими вызовами, но она представляет собой реальный код, с которым я столкнулся.
Пожалуйста, дайте мне знать, если требуется дополнительная информация или уточнение.Спасибо за любую помощь заранее!