Автор оригинала: zerkms
со второй частью фразы абсолютно не согласен
из $ref=&$a['a'] следует что и $a['a'] и $ref ссылаются на одну область памяти, но никак не "т.е. $a['a'] является ссылкой на $ref"
Как сказать ... я не хочу спорить о значении терминов. Если смотреть изнутри (т.е. с точки зрения реализации на С), то $a['a'] и $ref ссылаются на одну область памяти.
Если с точки зрения работы скрипта - то $a['a'] и $ref становятся идентичными и ведут себя как ссылки (что и видно из примера).
из этой строки должно следовать, что $b является ссылкой на $a (точнее - на ту же область памяти)
Должно по каким правилам? Или Вы лично ожидаете этого по аналогии с практикой на _других_ языках?
должно произойти отложенное копирование содержимого $b['a'] в отдельную область памяти и данные должны модифицироваться
Что значит "отложенное"?
RTFM
вы очень много ссылались на мануал. покажете конкретные ссылки?
Chapter 12. References Explained
References in PHP are a means to access the
same variable content by different names.
They are
not like C pointers; instead, they are symbol table aliases.
The most close analogy is with Unix filenames and files - variable names are directory entries, while variable contents is the file itself. References can be thought of as hardlinking in Unix filesystem.
Вы знакомы с файловой системой Unix? При записи в файл по ссылке тоже должно происходить "отложенное копирование"?
При копировании каталогов копируется содержимое, но
"If array with references is copied, its values are not dereferenced" указано вполне однозначно.
"What References Do"
$a and $b are completely equal here, that's
not $a is pointing to $b
"What References Are Not"
references aren't pointers
-~{}~ 03.01.07 02:38:
Автор оригинала: Leon82
grigori
Что такое ссылки мне объяснять не надо, спасибо! ) И логика работы со ссылками что в С/С++ что в Java мне абсолютно ясна...
Welcome to PHP
-~{}~ 03.01.07 03:25:
Автор оригинала: Franzusow
В болшом проэкте лутше исползоват Методы.
пример:
завтра нужно чтобы $person->name все большими буквами выдовал, а $person->name разбросоно по многим фейлам
В болшом проэкте лутше использоват профессианальный оналитык,
который спрогнозирует развитие системы и спроектирует классы.
Поэтому публичные поля, такие как $person->id, не будут изменяться бизнес-логикой, другого пользователя будет представлять другой объект, а изменение регистра имени будет производиться функцией strtoupper перед выводом или сохраняться в поле $person->name_upcase.