- PVSM.RU - https://www.pvsm.ru -
Если вы прочитаете документацию по PHP, вы узнаете о массе операторов [1]. Если вы не знаете ещё PHP-операторы, сперва изучите их, а потом вернитесь к прочтению этой статьи.
Судя по первым комментариям, хочу извиниться за плохой перевод, опыта у меня в этом мало, но хотелось перевести статью. Я буду рад любой критики относительно качества перевода, особенно за любые улучшения. Спасибо за внимание!
Операторы обычно состоят из странных символов, таких как !, -, =>, <=>, ^ or ~. Действительно, некоторые из них просто читаются, например like
, в то время как некоторые из них — упущенная попытка сделать их читаемыми и скрыть их фактически двойную индивидуальность, например, xor [2].
Вероятно, вы думаете, что знаете документацию PHP вдоль и поперёк, но всегда найдётся, чему поучиться. Поэтому я глубоко погрузился в ядро PHP-кода и посмотрел некоторые специальные операторы PHP, менее известные, но очень полезные в ежедневной работе.
Итак, вот 10 операторов PHP, которые вы должны знать в 2018 году!
Просто добавьте 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 к источнику 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 7.2.5, кроме звезды смерти. Они могут иметь некоторые предварительные условия, поэтому обязательно прочитайте документацию перед их использованием.
Автор: lex111
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/281304
Ссылки в тексте:
[1] операторов: http://www.php.net/manual/ru/language.operators.php
[2] xor: https://www.youtube.com/watch?v=orwCZm9ugJ0
[3] Источник: https://habr.com/post/412603/?utm_campaign=412603
Нажмите здесь для печати.