| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > [Class & Objects] композиция и ссылки |
| Автор: BrutalizedProgrammer 19.1.2007, 18:56 | ||||
собсна вот такой код на PHP4 (нужно передать объект по ссылке)
объект не передается по ссылке... и так тоже не передается:
и даже если втыкнуть в обоих местах амперсанды, все равно не передается, а просто копируется. вроде все правильно написал и протестил, дайте пожалуйста толковый совет. |
| Автор: GZep 19.1.2007, 19:59 | ||
| А в PHP вроде переменные не могут содержать сами объекты, а могут только ссылки на них... А зачем:
тут как раз & не нужен... |
| Автор: BrutalizedProgrammer 19.1.2007, 20:04 |
| кароче мне нужно, чтоб я работал с одним и тем же объектом в разных местах, а не с его копиями.... ну лан... меня все это напрягло... нашел хостинг с PHP5, к черту 4 версию... мозги с ней поломать можна... |
| Автор: AztEK 20.1.2007, 16:44 | ||||
Не совсем так... В PHP4 и раньше значения всех типов сохранялись в специальной структуру zval Zend\'овского движка. Они могли хранить как простые значения (строки и числа), так и сложные (массивы и объекты). Из-за этого и возникала проблема WTMA (Way Too Many Ampersands), когда для простейшего ООП-приложения надо было юзать чудовищное количество ссылок. С точки зрения программирования на PHP4 здесь все верно - как копируются строки, так должны и объекты (они одного типа по сути). Но опыт проектирования ООП-структур этому противоречил и в PHP5 ввели другую систему. Все переменные кроме объектов по прежнему хранятся в zval, а объекты хранятся в другом месте, так называемом Object Store и представляют собой, по сути, дескриптор (а не ссылку!) на структуру данных в этом хранилище. Т.е. теперь при присваивании обэекта он не копировался, а возвращался по ссылке как того и надо. |
| Автор: Vaulter 20.1.2007, 17:37 |
| в PHP6 передача обьекта по ссылке будет считатся за ошибку => код все равно придется переделывать |
| Автор: GZep 20.1.2007, 22:05 | ||
Ого... Как все запущено... Спасибо, это очень полезная инфа! |