Разработчику. Сборник рецептов PHP
Задавайте вопросы

Передача значений по ссылке

Вернуться назад

Задача

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

Решение

Для того чтобы функция принимала аргументы по ссылке, а не по значению, поставьте символ & перед именем параметра в прототипе функции:

function wrap_html_tag(&$string , $tag = ' b ') {
     $string = " <$tag>$string</$tag> ";
}

Теперь нет необходимости возвращать строку, поскольку изменяется сам оригинал.

Обсуждение

Передача переменной в функцию по ссылке позволяет избежать работы по возвращению переменной и присваиванию возвращенного значения исходной переменной. Это также удобно, если вы хотите, чтобы функция возвращала в случае успеха или неудачи логические значения true или false, но в то же время она могла бы еще модифицировать значения аргумента.

Можно выбирать между передачей параметра по ссылке или по значению – либо одно, либо другое. Другими словами, нельзя заставить PHP произвольно выбирать между передачей переменной по ссылке или по значению.

В действительности это утверждение не на 100% правда. Если конфигурационная директива allow_call_time_pass_reference разрешена, то PHP разрешает не передавать значение по ссылке, если символ амперсанда предшествует имени переменной. Однако начиная с версии PHP 4.0 Beta 4 использование этой возможности не приветствуется, и PHP предупреждает, что эта функциональность в будущем может быть исключена при использовании вызовов с передачей параметров по ссылке. Программистам следует быть внимательными.

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

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования


Рейтинг Сайтов ДОСКИ.РУ