класс — это $ this- & gt; __ invoke (); 100% безопасно и действительно в PHP?

// in class
public function test () {
$this->__invoke();
}

$inst->test();

Этот тест выполняется без ошибок.

Мой вопрос: есть ли причина, почему это не должно быть сделано? Есть ли какие-либо случаи, скрытые предостережения или они ведут себя как обычные функции / методы?

3

Решение

Это не должно работать, так как нет __invoke() метод в вашем классе:

class SomeClass {
public function test()
{
$this->__invoke();
}
}

$inst = new SomeClass();
$inst->test();

http://3v4l.org/JOBXn.

Если вы реализуете __invoke(), что должно работать:

class SomeClass {
public function __invoke()
{
var_dump('Invoke!');
}

}

$inst = new SomeClass();
$inst();

http://3v4l.org/mpG5d.

Магические методы можно вызывать напрямую, как вы можете видеть во втором тесте, но, на мой взгляд, это не очень хорошая идея, поскольку они являются своего рода хуками, и их код может быть выполнен неожиданно.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]