Почему добавление подсказки типа обратного вызова в php 7 вызывает предупреждение об устаревании - PullRequest
0 голосов
/ 19 июня 2020

У меня есть код ниже. Довольно простой материал. Однако он выдает предупреждение: Deprecated: Non-static method Foo::bar() should not be called statically in test.php on line 13 Если я добавлю подсказку типа к параметру $ method (например, вызываемый $ method), я получаю 2 предупреждения. Если я удалю подсказку, никаких предупреждений. Кроме того, кажется, что запускается процесс автозагрузки spl (если он был нужен).

Кто-нибудь знает, почему? Это ошибка, или что я делаю не так?

Спасибо

<?php
class Foo
{

    public function bar()
    {
        echo 'baz';
    }
}

function justReturn($method): callable
{
    return $method;
}

justReturn([Foo::class, 'bar']);

1 Ответ

0 голосов
/ 19 июня 2020

bar не является методом c stati, поэтому его нужно вызывать через объект, например

$foo = new Foo;
$foo->bar();

Если вы хотите, чтобы его можно было вызывать без объекта, вам нужно объявить это состояние c.

static public function bar() {
    echo "baz";
}
...