7.1+ == Обнуляемые типы параметров функций == function testReturn(): ?string { return 'elePHPant'; } var_dump(testReturn()); function testReturn(): ?string { return null; } var_dump(testReturn()); function test(?string $name) { var_dump($name); } test('elePHPant'); test(null); test(); == Функции без возврата == function swap(&$left, &$right): void { if ($left === $right) { return; } $tmp = $left; $left = $right; $right = $tmp; } $a = 1; $b = 2; var_dump(swap($a, $b), $a, $b); == Расширенная распаковка массива, аналогичная list == $data = [ [1, 'Tom'], [2, 'Fred'], ]; // используя list() list($id1, $name1) = $data[0]; // используя [] [$id1, $name1] = $data[0]; // используя list() foreach ($data as list($id, $name)) { // код, содержащий $id и $name } // используя [] foreach ($data as [$id, $name]) { // код, содержащий $id и $name } == Поддержка ключей в list() == $data = [ ["id" => 1, "name" => 'Tom'], ["id" => 2, "name" => 'Fred'], ]; // стиль list() list("id" => $id1, "name" => $name1) = $data[0]; // стиль [] ["id" => $id1, "name" => $name1] = $data[0]; // стиль list() foreach ($data as list("id" => $id, "name" => $name)) { // logic here with $id and $name } // стиль [] foreach ($data as ["id" => $id, "name" => $name]) { // logic here with $id and $name } == Видимость констант класса == class ConstDemo { const PUBLIC_CONST_A = 1; public const PUBLIC_CONST_B = 2; protected const PROTECTED_CONST = 3; private const PRIVATE_CONST = 4; } == Псевдотип iterable == (Аналогичный callable) function iterator(iterable $iter) { foreach ($iter as $val) { // } } == Обработка нескольких исключений сразу == try { // Какой то код } catch (FirstException | SecondException $e) { // Обрабатываем оба исключения } == Преобразование callable в Closure == class Test { public function exposeFunction() { return Closure::fromCallable([$this, 'privateFunction']); } private function privateFunction($param) { var_dump($param); } } $privFunc = (new Test)->exposeFunction();
PHP Справочник v0.05 © 2007-2024 Igor Salnikov aka SunDoctor