?Type)Объявление:
function log(?string $msg): ?int {
return $msg ? strlen($msg) : null;
}
log("hi"); // 2
log(null); // null
→ ?Type = Type|null. Работает для аргументов, возвращаемых значений, свойств (в 7.4+).
Для функций, ничего не возвращающих:
function dump($data): void {
var_dump($data);
// return; // ✅ допустимо
// return null; // ❌ Fatal error
}
Было: все константы public.
Стало:
class Config {
public const PUBLIC = 1;
protected const INTERNAL = 2;
private const SECRET = 3;
}
Принимает array или Traversable:
function process(iterable $data): void {
foreach ($data as $item) { /* ... */ }
}
process([1,2,3]); // ✅
process(new ArrayIterator([4,5])); // ✅
новый list() $arr = [‘x’=>1, ‘y’=>2]; [‘x’=>$a, ‘y’=>$b] = $arr;
mcrypt — заменён на openssl