Моя проблема может быть очень конкретной, я думаю. Я уже пытался найти информацию об этом, просмотрел множество сайтов, но без успеха. И я новичок в OO-php. Я попытаюсь объяснить проблему без образцов кода:singleton-registry pattern и object-взаимодействие с ajax
Итак, у меня есть объектно-ориентированное приложение php. Мой класс реестра реализует шаблон singleeltone (имеет только один экземпляр в целом приложении) и сохраняет объекты, которые должны быть доступны в любой части приложения. В этот момент мне нужно вызвать JQuery AJAX для взаимодействия с пользователем без перезагрузки страницы. Но вызов php-скрипта через AJAX дает мне еще один экземпляр моего класса реестра (когда я пытаюсь использовать реестр в вызываемом php-файле), этот экземпляр, конечно, пуст (не имеет объектов в массиве). Я думаю, это произошло потому, что AJAX вызывает работу в разных потоках (возможно, я ошибаюсь). В любом случае - где какой-то способ для богатых нуждался в функциональности с использованием шаблона реестра? Или, может быть, есть другие способы его достижения? Я знаю, что могу сделать свои классы статичными и использовать объекты статически, но, к сожалению, я не могу этого сделать. Я также знаю о глобальных варнах - это не мой путь ... Любая помощь, пожалуйста!
Erm, если у вас нет непрерывного PHP-приложения (которое редко, редко используется и обычно больше подходит для других языков), не так ли, что на каждом запросе _normal_ (non-ajax) нужно восстановить или хотя бы воссоздать свой объект реестра? Таким образом, это был бы способ пойти с запросами ajax. Как вы в настоящее время сохраняете свой сингл в реестре, как вы его воссоздаете при следующем запросе, и что отличает нас от вызовов ajax? – Wrikken
Например: $ instance = Application_Models_Registry :: getInstance(); $ instance-> set ('mySubjectList', $ subjectList); Класс реестра - это просто стандартный одноклассный магазин-класс. Затем в любой части приложения я могу снова создать экземпляр реестра и получить доступ к методу getList $ subjectList – Victor
Эти синглэты не выживают до следующего запроса, если вы не храните их где-нибудь (кеш/сеансы). – Wrikken