Странные операторы в PHP

в 17:04, , рубрики: php, PHP 7, Разработка веб-сайтов, странности

Странные операторы в PHP - 1

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

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

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

Вероятно, вы думаете, что знаете документацию 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, а целое число (в таком случае будет это будет работать как сравнение > — прим. пер.)

Стрелка влево для массивов [$a <= $b]

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

$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-истребители

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

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

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

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

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

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

$x = [ 1 => $b];

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

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

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

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

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

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

Автор: lex111

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js