PHP 7.4 Его выход запланирован на 21 ноября 2019 года. Он добавляет следующие функции:
- Короткое закрытие функция(
короткое закрытие) - Производительность подачи предварительной загрузки
- Ограничение типа атрибута
Улучшенная дисперсия типов(Без перевода)- Аббревиатура троичной операции
- Операция расширения массива
- Новые Магические методы :
сериализация - Разделитель чисел
- Оперативный Приоритет
- Разрешено в
__toStringСоздайте исключение в - Поддержка Отражающей Ссылки
- Новая функция разделения байтов
- удалить
phpКороткую метку - Отказ от оператора левой ассоциации
- Изменение, которое больше не является обратно совместимым
Функция короткого замыкания
Функции короткого замыкания могут уменьшить избыточный код:
array_map(function (User $user) {
return $user->id;
}, $users)array_map(fn(User $user) => $user->id, $users)
Необходимо отметить несколько моментов:
- Короткие замыкания обеспечивают прямой доступ к переменным вне функций замыкания, поэтому дальнейшая запись не требуется.
используйтеКлючевое слово - с
fnКлючевым словом Start $этоЕго можно использовать как обычное закрытие- Короткие замыкания содержат только одну строку кода и используются только для деклараций возврата. Их использование запрещено.
возвратКлючевое слово
Вы также можете использовать более строгий подход
$ids = array_map(fn(User $user): int => $user->id, $user);
Предварительная загрузка
Предварительная загрузка PHP может значительно повысить производительность
Преимущества: PHP 7.4 Ранее, если вы использовали фреймворк для разработки, каждый файл запроса должен был быть загружен и перекомпилирован. Предварительная загрузка загружает файлы в память при запуске фрейма и является постоянной для последующих запросов.
Недостаток: Повышение производительности может быть дорогостоящим и другими способами, и платформу необходимо перезапускать каждый раз, когда изменяется предварительно загруженный файл.
Ограничение типа атрибута
class A
{
public string $name;
public Foo $foo;
}Должен сказать, PHP Все ближе и ближе Java Равный сильный язык типов
Улучшенная дисперсия типов
Ковариантный тип возврата:
class ParentType {}
class ChildType extends ParentType {}
class A
{
public function covariantReturnTypes(): ParentType
{ /* … */ }
}
class B extends A
{
public function covariantReturnTypes(): ChildType
{ /* … */ }
}Зависимость (знакома ли она):?
class ParentType {}
class ChildType extends ParentType {}
class A
{
public function covariantReturnTypes(): ParentType
{ /* … */ }
}
class B extends A
{
public function covariantReturnTypes(): ChildType
{ /* … */ }
}Короткий Троичный оператор
В настоящее время > PHP 7 Более поздняя версия:
$data['date'] = $data['date'] ?? new DateTime();
оставайтесь PHP 7.4 Вы можете написать следующее:
$data['date'] ??= new DateTime();
Операция расширения массива
Объедините массивы в другой массив и верните одномерные массивы
$arrayA = [1, 2, 3]; $arrayB = [4, 5]; $result = [0, ...$arrayA, ...$arrayB, 6 ,7]; // [0, 1, 2, 3, 4, 5, 6, 7]
Будьте осторожны Действует только для цифрового индекса
Магический метод Нового класса
RFC Добавлены два новых магических метода __сериализация и __несериализация
Разделитель чисел
Позволяет более интуитивно разделять значения с подчеркиванием
$unformattedNumber = 107925284.88; $formattedNumber = 107_925_284.88;
Оперативный Приоритет
PHP 7.4 Ранее, если вы писали так:
echo "sum: " . $a + $b;
PHP Это будет истолковано как:
echo ("sum: " . $a) + $b;PHP 8 Это будет решено следующим образом:
echo "sum :" . ($a + $b);
____тоСтринг Создает исключение в
Поддержка Отражающей Ссылки
PHP 7.4 Будут новые дополнения Ссылка на отражение класс
Удалить ярлык Short
Это будет в PHP 8 Удалить в, Будет продолжать сохранять
Отказ от оператора левой ассоциации
PHP Некоторые странные странности, такие как
1? 2: 3? 4: 5; // will be discarded in PHP 7.4, and compilation errors will be thrown in PHP 8. (1? 2: 3)? 4: 5; // Correct
Изменение, которое больше не является обратно совместимым
- Отказ от вызовов без родительского класса
родительский:: - вызов
var_dumpПечатьДата, времяиDateTimeImmutableShi’instance больше не будут оставаться доступными свойствами объектов openssl_random_pseudo_bytesПри вызове ошибки возникает исключение- сериализуйте
PDOиPDOStatementЭкземпляр создастИсключениеВместоPDOExceptionненормальное - вызовите
get_object_vars()ПечатьОбъект массиваЭкземпляр вернетArrayObjectСвои собственные свойства, а не значения завернутых массивов или объектов,
Приведение массива не влияет