Nullable types
function testReturn(): ?string {
return 'elePHPant';
}
function testReturn(): ?string {
return null;
}
function test(?string $name) {
var_dump($name);
}
Void functions
function voidTest($a, $b): void {
$this->sum = $a + $b;
}
function voidTest($a, $b): void {
return;
}
Array "Destrukturierung"
$data = [
[1, 'Tom'],
[2, 'Fred'],
];
// list() style
list($id1, $name1) = $data[0];
// [] style
[$id1, $name1] = $data[0];
// list() style
foreach ($data as list($id, $name)) {}
// [] style
foreach ($data as [$id, $name]) {}
Sichtbarkeit von Konstanten
class ConstDemo
{
const PUBLIC_CONST_A = 1;
public const PUBLIC_CONST_B = 2;
protected const PROTECTED_CONST = 3;
private const PRIVATE_CONST = 4;
}
iterable pseudo-type
function iterator(iterable $iter) {
foreach ($iter as $val) {}
}
Multi catch exception handling
try {
// some code
} catch (FirstException | SecondException $e) {
// handle first and second exceptions
}
Keys in list()
$data = [
["id" => 1, "name" => 'Tom'],
["id" => 2, "name" => 'Fred'],
];
// list() style
list("id" => $id1, "name" => $name1) = $data[0];
// [] style
["id" => $id1, "name" => $name1] = $data[0];
Negative string offsets
var_dump("abcdef"[-2]); // string (1) "e"
Callables zu Closures umwandeln
class Test {
public function exposeFunction() {
return Closure::fromCallable([$this, 'privateFunction']);
}
private function privateFunction($param) {
var_dump($param);
}
}
$privFunc = (new Test)->exposeFunction();
$privFunc('some value');