В PHP7 есть несколько потрясающих возможностей. Первоначально, как уже упоминалось, в PHP5 (и даже старше, чем PHP5) мы могли сделать:
function something() {
echo 256;
}
$foo = "something";
$foo(); // 256
Это хорошо, но в PHP7 стало лучше. Мы можем выполнить произвольные операции над (a) строкой (ами) в скобках и использовать ее в качестве имени функции всего за один раз (учтите, что мы объявили что-то () как функцию:
$bar = "some_thing";
// We use in this form: (expressions)(arguments);
(str_replace("_", "", $bar))(); // 256
Кроме того, вы можете использовать все следующие формы:
(expressions)['bar']
(expressions)->bar
(expressions)->bar()
(expressions)->$bar()
(expressions)::$bar
(expressions)::bar()
(expressions)()
Например, вы можете использовать комбинацию анонимных классов и функции выше:
echo (new class {
public $something = 512;
})->something; // 512
Кроме того, вы можете вызвать метод для экземпляра класса в виде:
[objectInstance, methodName]();
В качестве примера мы могли бы сделать:
class X {
public function object_call() {
echo "Object Call";
}
public static function static_call() {
echo "Static Call";
}
}
[new X(), "object_call"](); // Object Call
[new X(), "static_call"](); // Static Call
Взято из этого разговора по PHP .