Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ООП, доступ к свойству объекта
 
 автор: Zilog   (14.10.2008 в 06:06)   письмо автору
 
 

История такая. На аяксе делаю запрос на получение параметров из другого файла, все работает, кроме строчки, где я пытаюсь получить значение свойства объекта.

echo $_SESSION['Order']->privateCustomer['name'];


причем, эта строчка работает, справно выводя кишки обьекта на экран:

print_r($_SESSION['Order']);


Надеюсь, люди знающие подскажут в чем дело?
Сессии включены, свойство объекта privateCustomer объявлена как public.
Из другого места в коде - строчка работает.

  Ответить  
 
 автор: Николай2357   (14.10.2008 в 07:19)   письмо автору
 
   для: Zilog   (14.10.2008 в 06:06)
 

Аякс самодельный или фреймворк какой?

  Ответить  
 
 автор: Zilog   (14.10.2008 в 11:38)   письмо автору
 
   для: Николай2357   (14.10.2008 в 07:19)
 

фреймворк. prototype.js


хочу еще уточнить: когда писал "работает из другого места" - имел ввиду другой файл.

print_r выводит:
__PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => Order [tourists:private] => [tourists_count:private] => [hotels:private] => [hotels_count:private] => [privateCustomer:private] => Array ( [name] => Иванов Сидор Харитонович [phone] => 111-11-11 ) )  



а вот какой print_r в рабочем месте:
Order Object ( [tourists:private] => [tourists_count:private] => [hotels:private] => [hotels_count:private] => [privateCustomer:private] => Array ( [name] => Иванов Сидор Харитонович [phone] => 111-11-11 ) ) 


вижу различия. но как заставить работать - непонмаю.

  Ответить  
 
 автор: shra   (13.12.2014 в 15:29)   письмо автору
 
   для: Zilog   (14.10.2008 в 11:38)
 

Необходимо, чтобы объявление класса, экземпляр которого передается через сессию, было выполнено раньше session_start. B противном случае десериализация превратит наш объект в экземпляр класса __PHP_Incomplete_Class.
В данном случае можно поправить ситуацию, пересоздав объект как, например, предлагается вот тут - http://shra.ru/2014/12/vosstanavlivaem-obekt-iz-sostoyaniya-__php_incomplete_class_name
Лучше, конечно, во-время подключить объявление класса.

  Ответить  
 
 автор: Tonik992   (17.12.2014 в 20:20)   письмо автору
 
   для: Zilog   (14.10.2008 в 11:38)
 

Все правильно. В мануале написанно, что функция print_r() позволяет выводить приватные атрибуты класса.. У вас же даже справа от атрибута privateCustomer выведено :private...

Соответственно, атрибут класса вовсе не public, и поэтому вы к нему законно не можете обратиться

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования