Добро пожаловать на форум PHP программистов!
За последние 24 часа нас посетили 22856 программистов и 1198 роботов. Сейчас ищут 888 программистов ...
Приступая к работе

Передача по ссылке

Вернуться к: Ссылки. Разъяснения

Вы можете передавать переменные в функцию по ссылке, и функция сможет изменять свои аргументы. Синтаксис таков:

<?php
function foo(&$var)
{
    
$var++;
}

$a=5;
foo($a);
// $a здесь равно 6
?>

Замечание: В вызове функции отсутствует знак ссылки - он есть только в определении функции. Этого достаточно для корректной передачи аргументов по ссылке. Начиная с PHP 5.3.0, вы можете получить предупреждение о том, что передача переменной по ссылке устарела, если используете & в foo(&$a);. Начиная с PHP 5.4.0 передача переменной по ссылке стала невозможна, поэтому использование этого приема приведет к фатальной ошибке.

По ссылке можно передавать:

  • Переменные, например foo($a)
  • Оператор new, например foo(new foobar())
  • Ссылки, возвращаемые функцией, например:

    <?php
    function foo(&$var)
    {
        
    $var++;
    }
    function &
    bar()
    {
        
    $a 5;
        return 
    $a;
    }
    foo(bar());
    ?>
    См. также объяснение возвращения по ссылке.

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

<?php
function foo(&$var)
{
    
$var++;
}
function 
bar() // Операция & отсутствует
{
    
$a 5;
    return 
$a;
}
foo(bar()); // Вызывает неисправимую ошибку начиная с PHP 5.0.5

foo($a 5); // Выражение, а не переменная
foo(5); // Константа, а не переменная
?>
Эти требования для PHP 4.0.4 и позже.



Вернуться к: Ссылки. Разъяснения

© 2024 «PHP.RU — Сообщество PHP-Программистов»
Главная | Форум | Реклама на сайте | Контакты VIP Сувениры
Разработка компании ODware