Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> php 5.4 уход от ссылок 
:(
    Опции темы
bars80080
Дата 21.9.2013, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



товарищи! взываю к вашему разуму и совести

самая трудно понимаемая для меня часть доков по пхп - изменения при появлении новой версии. дошёл до меня слух (а самому мозга не хватило раскопать и санализировать), что в пхп 5.4 отказано было от ссылок, а именно от такого ведения кода:

Код

class smth {
    public $A;
    public function __construct($A) {
        $this->A = &$A;

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

вопрос: как изменения коснуться такого ведения кода?
PM MAIL WWW   Вверх
ksnk
Дата 21.9.2013, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



bars80080, Да обычное "приближение языка к Java". Вот только тянет назад груз уже написанных скриптов, которые тоже как бы должны работать, без особой кровищщщщи при переписывании. Поэтому "хвост собаки отрезаем постепенно, из жалости".
Создатель Javascript сразу все объекты передает по ссылке, включая и массивы. Такая позиция честнее  smile 

Цитата(bars80080 @  21.9.2013,  11:42 Найти цитируемый пост)
вопрос: как изменения коснуться такого ведения кода? 

На такой код будет вполголоса ворчать IDE (phpStorm). Такой код, если специально озадачится установкой флагов, будет вызывать нотисы при выполнении. А больше никаких реальных изменений пока нет. Амперсанд перед объектом просто игнорируется.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
bars80080
Дата 21.9.2013, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



а массивы теперь будут всегда передаваться по ссылке? (и без амперсанда)
PM MAIL WWW   Вверх
ksnk
Дата 21.9.2013, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(bars80080 @  21.9.2013,  14:06 Найти цитируемый пост)
а массивы теперь будут всегда передаваться по ссылке? (и без амперсанда) 

Не! Массивы - через амперсанд. Мы же любим нашу собаку и не можем отрезать ей хвост сразу. Будем отрезать кусочками  smile 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
bars80080
Дата 21.9.2013, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



то есть для массивом ничего не изменилось
и для объектов ничего не изменилось, надо только отказываться от амперсанда

для повторения предыдущего надо всего лишь писать:
Код

class smth {
    public $A;
    public function __construct($A) {
        $this->A = $A;

и я по прежнему буду иметь в $this->A нужный мне объект
PM MAIL WWW   Вверх
AVA12
Дата 21.9.2013, 14:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 4.5.2008

Репутация: 0
Всего: 4



Цитата
в пхп 5.4 отказано было от ссылок

Не Иван Иванович, а Петр Петрович, и не в лотерею, а в карты...

В общем, ссылки и передачу/возврат по ссылкам никто не отменял. Так что можно по-прежнему смело объявлять что-нибудь вроде function &foo(&$bar) {}. Операторы ссылок запрещается использовать только при вызове функций, т. е. вместо $baz = &foo(&$bar) нужно писать $baz = foo($bar), но результат будет тот же (если функция правильно задана). Вот и все изменения.
PM ICQ Jabber   Вверх
baldina
Дата 21.9.2013, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



добавлю пять копеек. java и хвост собаки имхо непричем.
просто навели порядок: запретили определять режим передачи при вызове функции, его определяет теперь определяет автор функции, а не автор вызывающего кода. что бы не писать/читать на заборах проще обратиться к первоисточнику http://php.net/manual/ru/language.references.pass.php
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.