Pull to refresh

Интересные возможности языка PHP

Reading time 3 min
Views 7.7K
В данной статье я хочу рассказать о интересных, но не очень распространенных базовых возможностях языка PHP. Все, что написано далее в том или ином виде присутствует в документации к PHP в разрозненном виде. Автор вполне отдает себе отчет в том, что большинство профессиональных разработчиков все это отлично знает, но новички могут узнать что-то новое.

Содержание статьи имеет мало общего с моей прошлой статьей про использование выражений в PHP. Речь не идет об усложнении кода, скорее наоборот.


Команда BREAK.


Многие почему-то считают, что break может использоваться исключительно в конструкциях switch. Это заблуждение. Кроме switch, она используется в циклах. Кроме того, у команды есть необязательный параметр – число уровней, из которых надо выйти. Например:

while ($exp1) {
    while($exp2) {
        if ($exp3) {
            // полный выход из цикла
            break 2;
        }
        else {
            // выход только из while($exp2)
            break;
        }		
    }
}


Команда CONTINUE


Как и break имеет параметр – число уровней возврата к циклу.

while ($exp1) {
    while($exp2) {
        if ($exp3) {
            // возврат к while ($exp1)
            continue 2;
        }
        else {
            // возврат к while ($exp2)
            continue;
        }		
    }
}

Кстати, в конструкции switch команда continue дает точно такой же эффект, что и break. Поэтому, если у вас внутри цикла находится оператор switch, и вы внутри него попытаетесь выполнить continue, то у вас произойдет просто break из свича, а не возврат к началу цикла. В этом случае для получение ожидаемого нужно сделать continue 2;

Команда include


А вы знаете, что include скрипта работает точно так же, как вызов функции, а именно может возвращать значения, отдаваемые командой return в процессе выполнения этого скрипта? То есть можно сделать так:

// файл i.php
Return “hello, world!”

// файл index.php
// напечатает “hello, world!”
echo include (“i.php”);

Конечно, это касается остальных подобных команд (include_once, require, require_once).

Цикл for


О том, что в for в первом и третьем параметре можно перечислять выражения, я уже говорил в статье использовании выражений в PHP. Там и пример есть.

Оператор ${}.


Оператор ${} рассматривается как переменная, имя которой определено как строка, получаемая из выражения в фигурных скобках. Это очень сильно может облегчить жизнь при работе со свойствами и методами классов в ООП. Например:

$myClass = new stdClass();
$myClass->myParam  = new stdClass();
	
function calcThis ($method) {
    return "my".$method;
}

// Вы не можете так сделать, так как у вас это будет рассмотрено как метод класса:	
$myClass->calcThis('Param')->c = 3;

// Но вы можете это сделать так:
$myClass->{calcThis('Param')}->c = 3;

В этом примере нет знака $, потому что при обращении к методу или свойству класса он не требуется.

Команда DECLARE


Заслуженно можно сказать, что это самая редкоиспользуемая базовая конструкция в PHP. Она нужна для установки директив интерпретатору при выполнении кода. На данный момент существует только одна директива – ticks.

Declare (ticks=n) – говорит интерпретатору (создает событие), что ему нужно что-то обработать через каждые n тиков. Тик – это выполнение одного базового действия php. Кроме этого, с помощью специальной функции register_tick_function() установить функцию, которая будет выполнена при возникновении события, иначе конструкция бессмысленна.

На практике declare можно использовать для профайлинга скриптов. Т.е. благодаря тикам можно замерять время, потраченное на выполнение каждой вашей операции (или их группы) в скрипте.

Как это делается смотрите тут — http://www.php.net/manual/ru/control-structures.declare.php

Tags:
Hubs:
+73
Comments 174
Comments Comments 174

Articles