За последние 24 часа нас посетили 16048 программистов и 1539 роботов. Сейчас ищут 903 программиста ...

Передача в функцию по ссылке

Тема в разделе "PHP для новичков", создана пользователем rar, 1 окт 2009.

  1. rar

    rar Активный пользователь

    С нами с:
    9 дек 2008
    Сообщения:
    206
    Симпатии:
    0
    Адрес:
    Москва
    Когда стоит использовать? Имеет ли смысл всегда пользоваться ссылкой, когда значение объекта не должно изменяться, для того, чтобы не создавалась локальная копия - экономия памяти?

    PHP:
    1.         public static function fetch_array (& $result) {
    2.                 $j = 0;
    3.                 while ($arr[$j++] = mysql_fetch_array($result, MYSQL_ASSOC)) ;
    4.                 return $arr;
    5.         }
    6.  
    7.         public static function my_print (& $object) {
    8.                 echo '<pre>';
    9.                 print_r($object);
    10.                 echo '</pre>';
    11.         }
     
  2. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Передавай переменные по ссылке только когда это необходимо, но не ради микрооптимизации.
    http://habrahabr.ru/blogs/php/43489/
     
  3. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    1. Если исходное значение не должно измениться, то лучше передавать по значению, а то потом думай почему работает не правильно.
    2. Объекты всегда передаются по ссылке.
     
  4. rar

    rar Активный пользователь

    С нами с:
    9 дек 2008
    Сообщения:
    206
    Симпатии:
    0
    Адрес:
    Москва
    Под объектами я имел ввиду любой тип данных в PHP: скаляр, массив или, собственно, объект.
     
  5. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Нет смысла, если не передаются мегабайтные массивы или строки в подобных случаях:

    PHP:
    1. <?php
    2. function modifyData($data) {
    3.     // some modifications
    4.  
    5.    retrurn $data;
    6. }
    7.  
    8. $myData = modifyData($myData);
    9.  
    10. // Это, конечно, лучше заменить на
    11. function modifyData(&$data) {
    12.     // some modifications
    13. }
    14.  
    15. modifyData($myData);