Хабрахабр

[Перевод] Странные операторы в 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, кроме "звезды смерти".

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

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

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

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

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