Хабрахабр

[Перевод] Странные операторы в PHP

Если вы не знаете ещё PHP-операторы, сперва изучите их, а потом вернитесь к прочтению этой статьи. Если вы прочитаете документацию по PHP, вы узнаете о массе операторов.

Я буду рад любой критики относительно качества перевода, особенно за любые улучшения. Судя по первым комментариям, хочу извиниться за плохой перевод, опыта у меня в этом мало, но хотелось перевести статью. Спасибо за внимание!

Действительно, некоторые из них просто читаются, например like, в то время как некоторые из них — упущенная попытка сделать их читаемыми и скрыть их фактически двойную индивидуальность, например, xor. Операторы обычно состоят из странных символов, таких как !, -, =>, <=>, ^ or ~.

Поэтому я глубоко погрузился в ядро PHP-кода и посмотрел некоторые особенные операторы PHP, менее известные, но очень полезные в ежедневной работе. Вероятно, вы думаете, что знаете документацию PHP вдоль и поперёк, но всегда найдётся, чему поучиться.

Итак, вот 10 операторов PHP, которые вы должны знать в 2018 году!

Оператор b’

Этот ловкий трюк работает только с b и B. Просто добавьте b перед любой строкой, и ничего не произойдёт. Здесь мы должны напомнить о судьбе PHP 6, поскольку b похож на 6.

$string = b'content';

Оператор []=

Он работает так, как вы и ожидаете — добавляет элемент справа в массив слева. Короткий оператор добавления нового элемента в массив.

$array []= 'element';

Некоторые тесты показывают, что это намного быстрее, в то время как другие наоборот, что это намного медленнее. В самом деле, это намного элегантнее, чем $array[] = 'element';. Как обычно, посмотрите сами, подходит ли данный оператор вам, прежде чем делать ставку на производительность подобным трюком.

К сожалению, в официальном руководстве нет ни слова об этой замечательной возможности.

Оператор <-

Хотя позже проект был прекращён по непонятным причинам, этот первый оператор, получивший поддержку, сохранился в PHP. Оператор "левого объекта" был введен в PHP для расширения возможности написания кода, для того чтобы разработчики могли писать PHP-код справа налево.

$c = $a<-B;

В целях обратной совместимости вышеприведённый код не получит значение свойства B в объекте $a, а просто сравнивает $a в противоположность с B.

Оператор ––>

--> также известен как "оператор супер-объекта", создан на основе своего дальнего двоюродного брата, ->.

$object-->property

Основная хитрость: использовать не объект в качестве переменной $object, а целое число (в таком случае будет это будет работать как сравнение > — прим. --> работает как ->, за исключением того, что это не так. пер.)

Все мы знаем оператор => для массивов, но они также поддерживают зеркальную версию этого оператора следующим образом:

$array = [ 'a' => 'b', 'c' <= 'd',
]; var_dump($array);
/*
array(2) { ["a"]=> string(1) "b" [0]=> bool(true)
*/

Этот оператор также имеет возможность превращать оба операнда в логическое значение, для более компактного хранения. Это очень удобно для очень молодых программистов, а также тех, кто постарше, всё ещё использующих зеркальное написание.

Имена констант с *, %

Хотя в руководстве указано, что имя константы должно содержать только буквы, символы подчёркивания и цифры, но также разрешено использовать специальные символы типа * или % в имени. Константы хороши и эффективны, пока вам вам захочется больше свободы в их синтаксисе. Например, следующим образом:

// Далее три строки кода даны для пояснения того, что имел в виду автор статьи — прим. пер.
define('A', 2);
define('B', 1);
define('A*B', 2); $x = foo( A*B );

Это ещё одна хорошая причина, чтобы избегать использование простых чисел в качестве значений в константах. Единственное, нужно убедиться, что константы A и B существуют, а в результате их умножения получается значение предполагаемой константы.

Операторы "кораблей"

Но менее известно, что одновременно с этим релизом был введён целый флот космических кораблей для предложения крупномасштабных операций. Итак, когда PHP 7 вышел в свет, все знают об операторе космического корабля <=>.

Крошечный космический корабль

Этот оператор не делает сравнение: он просто добавляет $b к $a в таком изысканном стиле. Вы можете предоставить эскорт оператору космического корабля, используя крошечный оператор космического корабля.

$a -=- $b;

X-истребители

Следующий код вычитает 3 у $a (в оригинальной статье написано, что оператор прибавит 3 (adds 3 to $a), но это не так, см. Если вы хотите добавить огневую мощь к предыдущему флоту, вы можете вызвать истребителей типа X к источнику PHP: +-0-+. пер.) вывод примера ниже — прим.

$a = 8;
$a = $a +-0-+ 3; // 5

Линейный корабль

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

$x = [ 2 <=['-']=> $b];

Разве не лучший способ написать так?

$x = [ 1 => $b];

Звезда Смерти

Есть планы на это, но никто никогда не видел реального экземпляра. Многие из вас бы спросили, а был ли встроен в PHP оператор "звезда смерти", и ответ таков: в данный момент неизвестно. Мне бы очень хотелось видеть оператор в три строки, так как PHP будет первым, кто будем иметь подобное (и, когда это произойдёт, надеюсь, не с моего счёта спишут стоимость этого оператора).

$x = $y ~~ ( °) ~~ true;

Безумие оператора PHP

Мы надеемся, что эти менее известные операторы научили вас кое-чему в PHP. Операторы PHP — аккуратные и эффективные.

2. Проверьте приведённые примеры кода: все они работают в PHP 7. Они могут иметь некоторые предварительные условия, поэтому обязательно прочитайте документацию перед их использованием. 5, кроме "звезды смерти".

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть