Оператор return в языке PHP

21.05.2007

Для начала вы должны узнать, что return это оператор. Т.е. специальная конструкция языка, предназначенная для каких-то служебных действий. И он есть не только в PHP.

И предназначен он, прежде всего, для следующих целей:

  • Это один из способов возврата результата работы функции
  • Это один из способов выйти из функции

Я не буду пересказывать учебник и говорить о том, что же это за оператор в точности и что нам мол без него никак, просто сделаю акцент на том, что оба этих действия можно сделать и без помощи оператора return. Например, первое можно сделать просто передав параметр по ссылке, а не по значению:

function getString(& $str) {

$str = “preved”; }
И вызвав ее:
getString($xxx);
echo $xxx;

Мы увидим строчку “preved” на экране. По сути мы вернули результат не через return, а через параметр функции. Я когда начинал программировать напоролся на эти самые грабли. Все пытался через return возвращать, даже структуры и массивы. Все приходилось в один массив запихивать и возвращать. А когда наконец узнал эту вещь – это почти как узнать оператор IN языка SQL, мощная вещь ;)

Второе можно сделать не вызывая return, а просто дойдя до конца функции, до ее самой последней закрывающей скобочки. Но это, я думаю, очевидно.

Помимо своего основного предназначения в языке PHP он имеет еще одну особенность – при помощи этого оператора можно выходить не только из функции, но и из текущего включенного файла. Т.е. если вы точно знаете, что вы находитесь сейчас во включенном при помощи include файле, то сделав return вы окажетесь сразу после точки включения в родительском файле. Ни разу, честно говоря, не пользовался, но тем не менее возможность такая предусмотрена.

Вот вкратце и все особенности работы данного оператора.

И мне бы хотелось помечтать напоследок. Мне лично всегда не хватало одного оператора для очень частой возникающей задачи. А задача состоит в том, что бы постоянно накапливать в некой переменной значения, а потом возвратить их из функции. Например, мы считываем массив из файла и преобразуем каждое значение, и просто добавляем в некий массив:

$out[] = $string;

Или просто дописываем к строчке

$out .= $string;

И заметьте как было бы удобно иметь оператор return_array или return_string которые бы по ходу работы функции брали и дописывали к выходному значению строчку или добавляли ее в выходной массив, и по окончанию работы возвращали бы ее из функции. Например так:

function read_array($in) {

foreach(file($in) as $str) { $str = trim($str); //еще какие-то действия return_array $str; } }
А на выходе бы массивчик строк. Удобно согласитесь. Т.е. просто по ходу работы всей функции мы не сами бы копили данные, а этим занимался бы непосредственно язык, во внутреннем временном хранилище, а мы бы не задумывались и не тратили время на создание временных переменных.

И так мне эта мысля понравилась, что даже написал свой фьючер реквест разработчикам языка пхп (пришлось на их буржуйском наречии изъясняться, надеюсь поймут меня). Молчат пока что, но вдруг реализуют. Кто их знает.


Комментирование этой статьи закрыто

Комментарии [6]

  1. Июн 22, 14:39 , codexx

    Про фьючер реквест:
    Это вряд ли, так как не входит в концепцию return – произвести выход из функции, а концепции этой уже больше 50 лет.
    Проще накапливать данные в массиве, imho.

  2. Июн 22, 23:26 , Dead Krolik

    Дак и я думаю что фиг сделают, уже сколько времени уже прошло, а ноль реакции на него.

    Просто этот фьючер реквест наболее близок к ретурну, поэтмоу и мысли высказал именно в этом посте, и конечно же это никак не замена самого оператора.

  3. Сен 2, 18:22 , veHab13

    насчт передачи параметров в функцию по ссылке – по мне так это извращение для пхп, если надо работать с самой переменной а не ее значением – в пхп можно например использовать global – очень даже удобно

  4. Сен 2, 18:35 , Dead Krolik

    Глобальные переменные это моветон, ваще-то :)

  5. Май 30, 15:44 , MaZa

    а че global моветон?? =(

  6. Июн 4, 22:22 , Dead Krolik

    Дак ваще.

Комментирование этой статьи закрыто

Кто я


Возраст: 23
Профессия: заяц


Категории


Полезные ссылки


Стишок

Зайчик-зайчик, скок-поскок!
Н-нна тебе дробину в бок!
Не с капустой же мы будем
Жрать на Новый год пирог...

eu-shestakov.livejournal.com