Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Заблокирован

Объект в сессию без __PHP_Incomplete_Class_Name

22.10.2013, 19:55. Показов 2188. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Наивно полагая что присвоение объекта элементу сессии обеспечивает копирование данных (по крайней мере как обещано через прозрачную сери-унсериализацию) нарисовал класс загрузки настроек из БД и присвоил:

PHP
1
$_SESSION[CONFIG_NAME] = new Settings($link);
Половина скриптов внезапно перестала работать. Оказалось что вместо Settings я получаю из сессии огрызок под названием __PHP_Incomplete_Class_Name

Мануал объяснил что потребуется вложить текст класса на страницу которая хочет получить из сессии объект, даже если этот класс там не нужен. Прелестно, да? Ясно же - не нужен, иначе зачем нужен сессионный объект. Кроме того в мануале забыли явно отметить что это самое вложение должно вложиться до session_start(), что окончательно обрадовало до немогу. Потому что через сессию передаются и пути к этим самым вложением. Ну, типа старт, взял, стоп, вложил, старт - не проверял.

Вот этот мануал http://php.net/manual/en/oop4.serialization.php Отсутствие каментов под статьей плохой признак. Намекает на отсутствие практики и как следствие на неправильный выбор. По крайней мере не популярный.

Переписывать класс в функцию, делать синглетон и в таком роде не рискнул, просто превратил объект класса Settings в stdClass:

PHP
1
2
$settings = new Settings($link);
$_SESSION[CONFIG_NAME] = (object) (array) $settings;
Настройки как выше отмечено берутся из бд, их немного, структуированы. Удивительно что преобразование в массив и обратно ничего в структуре не порушило. Где была пропертя - пропертя, где был массив (индексный) - остался массив. Скрипты ожили.

Вопросы такие. Во-первых в чем глубокий смысл этой фичи - связывания объекта в сессии с классом. Второй: нельзя ли более гуманно разорвать эту связь. И последий: каковы популярные методы хранения настроек доступных из любого уголка приложения? Спасибо.

ЗЫ Попутно вычитал на форуме (анг) мнение читателя типа гр..сь сессии конем, буду лучше из бд тягать кажды раз. У меня так и было, но я подумал неловко как-то, хотя и немного в общем. Там кода в 100 раз больше чем получается данных, решил, типа, сэкономить.
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.10.2013, 19:55
Ответы с готовыми решениями:

Выбирать из базы без повторов за сессию
Добрый день, написал небольшой движок для проекта, но есть одна проблема... Зашедший пользователь, или авторизированный может рандомно...

Открыть сессию Facebook по token без окна авторизации
Подскажите, каким образом правильно использовать метод openActiveSessionWithAccessToken() в Faсebook API. Прохожу авторизацию, получаю...

Найти количество студентов, сдавших сессию без двоек.
Известны оценки каждого из 15 студентов, полученные в сессию на экзаменах по трем предметам: Студент Предмет 1 2 ...

1
shra
13.12.2014, 14:05
Из базы, конечно, тягать не дело, если в сессии можно хранить что то. Проблема с преждевременной десериализацией объекта. Восстанавливал объект как то так - http://shra.ru/2014/12/vosstan... lass_name/
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.12.2014, 14:05
Помогаю со студенческими работами здесь

Найти количество студентов, сдавших сессию без троек
Разработать модуль и применить его в основной программе. Модуль должен содержать процедуру формирования массива и процедуры (функции)...

Нужно закрыть сессию и Application без использования global.asa
Нужно закрыть сессию и Application без использования global.asa, когда пользователь просто закрывает браузер, а не уходит куда-либо по...

Выбор студента с максимальным ростом, сдавшего сессию без троек
Может кто нибудь помочь... выбор студента с максимальным ростом, сдавшего сессию без троек

при вызове конструктора присваивания надо возвращать ссыль на объект или сам объект. Смысл? Значения нужных полей меняютмся и без этого!
Друзья! Обнаружил пробел в знаниях. Собсно, вопрос в теме. Дополню лишь: поля объекта меняются на нужные значения и безо всякого возврата...

на структуры. Как определить сдавших сессию на 4 и 5 по ФИО и оценки по 4 предметам за последнюю сессию?
:scratch:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru