Rozważmy następujący kod:Dlaczego wywoływanie właściwości wywoływalnych w PHP 7 działa?
interface Doll
{
/**
* @return string
*/
function __invoke();
}
class LargeDoll
{
private $inner;
function __construct(Doll $inner)
{
$this->inner = $inner;
}
function __invoke()
{
return $this->inner() . ' world';
}
}
to nie będzie działać, ponieważ spodziewa $this->inner
być metoda, zamiast właściwości na żądanie.
Potem przyszło mi do głowy, tak jak gdyby działało (new LargeDoll)();
, a co jeśli własność została również opakowana w parantezę? Więc ja testowałem to na 3v4l:
return ($this->inner)() . ' world';
And found that it works for PHP 7, but not for previous versions.
Jednak nie mogę znaleźć żadnej wzmianki o tym in the changelogs.
Gdzie mogę znaleźć więcej informacji o tej funkcji?