PHP 8. Новинки языка и программы для работы с ним

Михаил Сергеевич Губин

PHP – один из самых простых в освоении языков программирования. С помощью учебника PHP и правильной мотивации вы можете написать первые скрипты и выполнить команды в течение нескольких часов.

Оглавление

* * *

Приведённый ознакомительный фрагмент книги PHP 8. Новинки языка и программы для работы с ним предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Новые возможности

Типы объединения

Учитывая динамическую типизированную природу PHP, существует множество случаев, когда типы объединения могут быть полезны. Типы объединения — это набор из двух или более типов, которые указывают, что любой из них может быть использован.

public function foo (Foo Bar $input): int float;

Обратите внимание, что «void» никогда не может быть частью типа объединения, так как он указывает на отсутствие возвращаемого значения вообще. Кроме того, обнуляемые союзы могут быть записаны с помощью" null» или с помощью существующего обозначения»?»:

public function foo (Foo null $foo): void;

public function bar (?Bar $bar): void;

JIT

JIT — just in time-компилятор обещает значительное повышение производительности, хотя и не всегда в контексте веб-запросов. Мне кажется, что JIT не имеет большого значения, если вообще имеет значение для PHP-проектов.

Нулевой безопасный оператор

Если вы знакомы с оператором слияния null, вы уже знакомы с его недостатками: он не работает при вызовах методов. Вместо этого вам нужны промежуточные проверки или полагайтесь на необязательных помощников, предоставляемых некоторыми фреймворками:

$startDate = $booking-> getStartDate ();

$dateAsString = $startDate? $startDate-> asDateTimeString (): null;

С добавлением нулевого безопасного оператора мы теперь можем иметь нулевое коалесцирующее поведение на методах!

$dateAsString = $booking-> getStartDate ()? — > asDateTimeString ();

Именованные аргументы

Именованные аргументы позволяют передавать значения функции, указывая имя значения, так что вам не нужно принимать во внимание их порядок, а также вы можете пропустить необязательные параметры!

function foo (string $a, string $b,?string $c = null,?string $d = null) {/*… */}

foo (b: ’value b’, a: ’value a’, d: ’value d’,);

Атрибуты

Атрибуты, обычно известные как аннотации на других языках, предлагают способ добавления метаданных в классы без необходимости разбора docblocks.

Что касается быстрого взгляда, вот пример того, как выглядят атрибуты, из RFC:

use App\Attributes\ExampleAttribute;

@@ExampleAttribute class Foo

{

@@ExampleAttribute public const FOO = ’foo’;

@@ExampleAttribute public $x;

@@ExampleAttribute public function foo (

@@ExampleAttribute $bar) {}

}

@@Attribute class ExampleAttribute {

public $value; public function __construct ($value) {$this-> value = $value;

}

}

Обратите внимание, что этот базовый атрибут раньше назывался атрибутом PHP в исходном RFC, но впоследствии был изменен другим RFC. Если вы хотите глубоко погрузиться в то, как работают атрибуты, и как вы можете построить свой собственный.

Также обратите внимание, что синтаксис атрибута все еще может измениться, он все еще не определен.

Выражение соответствия

Вы можете назвать его старшим братом выражения switch: match может возвращать значения, не требует операторов break, может комбинировать условия, использует строгие сравнения типов и не выполняет никакого принуждения типов.

Конец ознакомительного фрагмента.

Оглавление

* * *

Приведённый ознакомительный фрагмент книги PHP 8. Новинки языка и программы для работы с ним предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Смотрите также

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я