public function foo (Foo|Bar $input): int|float;
Обратите внимание, что «void» никогда не может быть частью типа объединения, так как он указывает на отсутствие возвращаемого значения вообще. Кроме того, обнуляемые союзы могут быть записаны с помощью "|null» или с помощью существующего обозначения»?»:
public function foo (Foo|null $foo): void;
public function bar (?Bar $bar): void;
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, может комбинировать условия, использует строгие сравнения типов и не выполняет никакого принуждения типов.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «ЛитРес».
Прочитайте эту книгу целиком, на ЛитРес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.