Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: передача по ссылке

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Bio man
Отправлено: 11 Апреля, 2016 - 21:29:34
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




когда то была возможность сделать так
PHP:
скопировать код в буфер обмена
  1.  
  2. function test($a) {}
  3. $a = ['test'];
  4. test(&$a);
  5. test(['test']); // или так
  6.  

вот не пойму, почему убрали такую возможность, удобно же.
Теперь, что бы передать аргумент по ссылке, нужно сделать так, что не очень удобно
PHP:
скопировать код в буфер обмена
  1.  
  2. function test(&$a) {}
  3. $a = ['test'];
  4. test($a);
  5. test(['test']); // так уже не сделаешь!
  6.  

т.е. приходится создавать переменную и потом передавать ее.
 
 Top
Viper
Отправлено: 11 Апреля, 2016 - 22:13:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Bio man пишет:
что не очень удобно
как раз таки удобно это в объявлении функции, а не где-то в глубинах кода стопицот раз объявлять.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
OrmaJever Модератор
Отправлено: 12 Апреля, 2016 - 15:08:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Bio man пишет:
вот не пойму, почему убрали такую возможность, удобно же.

Это может привести к неопределённости и проблемам т.к. функция может изменять этот параметр как угодно потому что она не расчитывает на передачу по ссылке. Например
PHP:
скопировать код в буфер обмена
  1. function hash( string $pass ) {
  2.    $param .= 'SALT';
  3.    return md5($param);
  4. }
  5.  
  6. $pass = $_POST['pass'];
  7. $hash = hash(&$pass);
  8.  
  9. if( strlen($pass) < 6 ) {
  10.    die('больше 6 символов');
  11. }
  12.  

Представим что функция hash определена где-то в глубине фреймворка и ты не видишь ее код, ты только знаешь что она возвращает хеш пароля. Пишем код, который вроде бы корректный, но он не работает, пропускает пароли больше 2 символов (а если соль больше то может вообще пустой пропустить). И это только простой пример, не определенности, а может быть хуже, и можно убить много времени на дебаг таких ситуаций. Поэтому если функция не рассчитывает на ссылку то не нужно ее туда пихать


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB