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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PHP5, OOP: общее свойство, экземпляры и их изменение 
V
    Опции темы
flashaa
Дата 16.3.2008, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 19
Всего: 25



N0dwis, это без разницы. Во всех скриптах для PHP4 оставлен указатель. При этом на PHP5 все скрипты с амперсендом прекрасно работают. Взять хотя бы PEAR. Да, этот знак избыточен, но он не может быть причиной ошибки. Потом, такие слова как адрес в PHP вообще не имеют смысла, в C, Delphi - да, а  в PHP это просто прием, который позволяет двум переменным ссылаться на одну ячейку памяти. 
PM MAIL   Вверх
Canarat
Дата 16.3.2008, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



В общем выяснились некоторые подробности, касательно РНР разработчика, использовавшего мой сервер некоторое время.

Все дело в ze1.compatibilty_mode(хотя Zend Accelerator не подключен), строчке из php.ini, я не обратил внимания на неё когда SelenIT сделал предположение.

Но такое построение кода достаточно тривиально, и не уверен, что оно могло измениться с ze1 до ze2. Может, все-таки, баг?
PM MAIL   Вверх
N0dwis
Дата 16.3.2008, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(flashaa @  16.3.2008,  17:25 Найти цитируемый пост)
Потом, такие слова как адрес в PHP вообще не имеют смысла, в C, Delphi - да, а  в PHP это просто прием, который позволяет двум переменным ссылаться на одну ячейку памяти.  

Ну да, но суть-то такая же... А как по другому это назвать?  smile 

Цитата(Canarat @  16.3.2008,  18:08 Найти цитируемый пост)
Может, все-таки, баг? 

Canarat, не баг. Я включил у себя zend.ze1_compatibility_mode - результат тот же, что и у тебя! В последних 3-х случаях не происходит приращение счетчика! Буду копать дальше.

Это сообщение отредактировал(а) N0dwis - 16.3.2008, 21:13
PM MAIL   Вверх
Canarat
Дата 16.3.2008, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



N0dwis, я имею в виду именно баг PHP с такими настройками.
PM MAIL   Вверх
N0dwis
Дата 16.3.2008, 21:52 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



"Ну, барин, ты задачи ставишь!" (с) к/ф "Формула любви".
НАШЕЛ!
Не глюк и не баг, все работает, как и должно. По этому поводу есть и статья в документации References inside the constructor.
И если подправить код вот так:
Код

...
$cl = & new Class1;
echo var_dump($cl->Req);
...

то все работает!
Оказывается, конструктор возвращает не сам созданный объект, а его копию! Т.е. $this в конструкторе и результат new Class1 - это не одно и то же! А чтобы было одним и тем же, нужно использовать не оператор копирования (=), а оператор получения ссылки (= &) (Это практически цитата из документации).
 smile 

Блин, полезно все-таки иногда вдумчиво читать инструкции...

Это сообщение отредактировал(а) N0dwis - 16.3.2008, 21:56
PM MAIL   Вверх
flashaa
Дата 16.3.2008, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 19
Всего: 25



N0dwis, если ты про это - http://www.php.net/manual/ru/language.oop.newref.php ,
то оно относится к PHP 4, и это справедливо для любых операций, где присваиваются объекты в PHP 4. В 4ке передаются копии объектов. В 5ой версии все объекты передаются по ссылкам, в т.ч. возвращаемое конструктором значение $this.

Это сообщение отредактировал(а) flashaa - 16.3.2008, 22:12
PM MAIL   Вверх
N0dwis
Дата 16.3.2008, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(flashaa @  16.3.2008,  22:08 Найти цитируемый пост)
N0dwis, если ты про это - http://www.php.net/manual/ru/language.oop.newref.php

Именно про это. Canarat, ведь сказал, что у него php работает в режиме совместимости с 4-й.
PM MAIL   Вверх
flashaa
Дата 16.3.2008, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 19
Всего: 25



N0dwis, молодца. Точно, с такой опцией передаются копии объектов как в PHP4 и амперсенд в самый раз.
Цитата

  zend.ze1_compatibility_mode  boolean

    Включает режим совместимости с Zend Engine 1 (PHP 4). Это влияет на клонирование, приведение типов и сравнение объектов. 


Это сообщение отредактировал(а) flashaa - 16.3.2008, 22:20
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.

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


 




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


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

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