Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 05.06.2007, 18:18   #1
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию Многократная инициализация user_ объектов PHP

Случайно набрёл, отлаживая конструктор user_ класса, что он запускается столько же раз, сколько мы имеем вызовов объектов

Код:
lib... = USER
lib...{
userFunc = user_view->....
}
Помоему, всё это кэшируется, но всё равно как-то это нелогично... конечно, это я всё PHP-категориями мыслю...
c0d3r вне форума   Ответить с цитированием
Старый 05.06.2007, 21:08   #2
Pavel Antonov
Senior Member
 
Аватар для Pavel Antonov
 
Регистрация: 01.10.2004
Адрес: Россия, Москва
Сообщений: 1,204
Отправить сообщение для Pavel Antonov с помощью ICQ
По умолчанию

И в чем же отсутствие логики?
__________________
Павел Антонов
Rich Media Development Ltd.
Блог: http://codeline.richmd.ru/
Pavel Antonov вне форума   Ответить с цитированием
Старый 06.06.2007, 09:52   #3
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию

Возможно, я не прав, но я бы предпочёл единичную инициализацию класса. Я уже написал - мыслю PHP-категориями, то есть так как привык работать. Не обращайте внимания, мой испуг уже прошёл, главное, что USER кэшируется

Последний раз редактировалось c0d3r; 06.06.2007 в 10:48
c0d3r вне форума   Ответить с цитированием
Старый 06.06.2007, 13:40   #4
Pavel Antonov
Senior Member
 
Аватар для Pavel Antonov
 
Регистрация: 01.10.2004
Адрес: Россия, Москва
Сообщений: 1,204
Отправить сообщение для Pavel Antonov с помощью ICQ
По умолчанию

Цитата:
Сообщение от c0d3r Посмотреть сообщение
Возможно, я не прав, но я бы предпочёл единичную инициализацию класса. Я уже написал - мыслю PHP-категориями, то есть так как привык работать. Не обращайте внимания, мой испуг уже прошёл, главное, что USER кэшируется
Каждый блок, самостоятельный объект, имеющий собственную привязку на странице и ID, с любой точки зрения... и PHP в том числе - это разные объекты! Причем тут инициализация класса, вообще не понятно... видимо у Вас какое то другое PHP, отличное от моего . Кроме того, коль уж так зациклены на PHP, Вам должно быть известно что такое Singleton.

USER может тоже не кэшироваться при установке no_cache = 1... Вместе со всей страницей.
__________________
Павел Антонов
Rich Media Development Ltd.
Блог: http://codeline.richmd.ru/
Pavel Antonov вне форума   Ответить с цитированием
Старый 06.06.2007, 14:56   #5
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию

PHP вряд ли другое Инициализация объекта имелась в виду, конечно, извиняюсь. То, что там самостоятельные объекты, я понял, вопрос закрыт.
c0d3r вне форума   Ответить с цитированием
Старый 15.06.2007, 12:59   #6
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию

Важный вопрос вдогонку - можно как-то прописать запуск синглтона через USER?

Ситуация такая - один метод класса генерит данные, необходимые другому методу.
Но при многократной инициализации такой подход можно реализовать только через singleton.

Код:
lib.content = USER
lib.content {
	userFunc = user_view->content
}

lib.pager = USER
lib.pager {
	userFunc = user_view->pager
}
Хотелось бы, чтобы пейджер знал об общем кол-ве записей из content, которые ему нажно раскидывать по страницам.
Передавать через $GLOBALS как-то неэтично, верю, есть более изящный и логичный Typo3-way

Последний раз редактировалось c0d3r; 15.06.2007 в 13:14
c0d3r вне форума   Ответить с цитированием
Старый 16.06.2007, 02:06   #7
void
Senior Member
 
Аватар для void
 
Регистрация: 14.03.2006
Адрес: Russia, Penza
Сообщений: 1,504
Отправить сообщение для void с помощью ICQ
По умолчанию

Существует глобальный массив T3_VARS. Однако мне кажется, что здесь ошибка в логике проектирования приложения. Что вы будете делать, если пейджер будет вызван до content?
__________________
TYPO3 FAQ
void вне форума   Ответить с цитированием
Старый 16.06.2007, 09:05   #8
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию

Да, логика хромает - жесткий дедлайн, выбора нет, в ход идут любые костыли и т.д. Реальный ужос, я противник такого, но иногда бывает и так. После запуска "любой ценой" будет рефакторинг. За T3_VAR (у Вас опечатка) спасибо, но глобальный массив - это не ООП , а интересует именно работа USER с синглтоном, раз уж о чём-то таком упомянул Павел.

Последний раз редактировалось c0d3r; 16.06.2007 в 11:05
c0d3r вне форума   Ответить с цитированием
Старый 16.06.2007, 18:08   #9
Pavel Antonov
Senior Member
 
Аватар для Pavel Antonov
 
Регистрация: 01.10.2004
Адрес: Россия, Москва
Сообщений: 1,204
Отправить сообщение для Pavel Antonov с помощью ICQ
По умолчанию

Цитата:
Сообщение от c0d3r Посмотреть сообщение
Да, логика хромает - жесткий дедлайн, выбора нет, в ход идут любые костыли и т.д. Реальный ужос, я противник такого, но иногда бывает и так. После запуска "любой ценой" будет рефакторинг. За T3_VAR (у Вас опечатка) спасибо, но глобальный массив - это не ООП , а интересует именно работа USER с синглтоном, раз уж о чём-то таком упомянул Павел.
Опять не понял причем тут TYPO3?

Нужен Singleton, ну так делайте! Если PHP4, то без $GLOBALS (или $_SESSION) не обойтись никак.

Если дедлайн, то чего бы просто не сделать, а потом уже рассуждать об ООП?
__________________
Павел Антонов
Rich Media Development Ltd.
Блог: http://codeline.richmd.ru/
Pavel Antonov вне форума   Ответить с цитированием
Старый 17.06.2007, 11:42   #10
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию

Да, php4, будем пробовать.
А почему Вы решили, что делается иначе?

Итак, продолжаем после дедлайна ))

Цитата:
Опять не понял причем тут TYPO3?
См. вышеприведённый код про lib.content = USER.

Я не понимаю, как можно запускать класс user_view синглтоном (надо полагать, инициализация происходит в ходе парсинга TS).
Если Вы поннимаете, подскажите, пожалуйста.
ps Классы, которые вызывает user_view вызывать как синглтоны не проблема, это работает.

Последний раз редактировалось c0d3r; 20.06.2007 в 10:50
c0d3r вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 09:06.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория