vanicon меня интересуют рекурсивные ссылки между регистром и объектами, который он содержит, то есть
в объекте присутствует ссылка на регистр, в которой присутсвует ссылка на объект.
Меня интересует это нормально?
Здравтвуйте.
Есть регистр объектов в виде одиночки.
Схема такая
registry->set(classA)
registry->set(classB)
registry->set(classC)
теперь, из classA мне через registry надо обращаться к classB или к classC,
То есть из classA беру instance registry, который в свою очередь содержит ссылку на classA.
Правильна ли такая схема? Не может ли это привести к утечке памяти?
И вообще как организовать правильно регистр, чтобы все его члены имели доступ друг к другу?
Читал что в php 5.3.3 и выше сборщик мусора учитывает такие нюансы, но много хостов на предыдущих версиях.
Здравсвуйте! Ближе к теме раздел в форуме не нашел.
Делаю мультиязычный сайт. На главное странице по IP определяю язык пользователя
и перенапрвляю в соответсвующий раздел.
site.com -> site.com/en, site.com/ru и т/д
Как к этому относятся поисковики? т/е фактически на странице site.com никакого контента не будет.
Спасибо.
caballero Суть идеи понятна, но "фабричный статичнский метод", как я понимаю здесь связь с паттерном проектировая фабрика? не приходилось сталкиваться, пойду погуглю.
А можете пару строчек написать как это выглядит, если не долго? )
Наверное мы друг друга не поняли) Вобщем, в класс "Ингридиент" поступает ID Проудкта, в статический метод класс Ингридиент получает список ингридиентов со всей инофрмации, и создаются экземпляры класса "Ингридиент" из данных из массива, то есть избавляемся от кучи запросов
Я предлогаю теже 2 класса, но в конструктор ингридиента приходит масив id этих самых ингридиентов, и одним запросом мы вытягиваем всё что для них нужно и пишем в масив, ну а потом можно сделать отдельный метод для доступа к конкретному ингридиенту по id.
Ну или масив id передаётся в простую функцию, которая выбирает все нужные ингридиенты, а затем для каждого из них создаёт обьект и возвращает масив обьектов.
Думаю не совсем то.
OrmaJever пишет:
ну а потом можно сделать отдельный метод для доступа к конкретному ингридиенту по id.
отходим от концепций ООП, уже идет работа с группой объектов, нельзя полноценно манипулировать как с единицей
OrmaJever пишет:
Ну или масив id передаётся в простую функцию, которая выбирает все нужные ингридиенты, а затем для каждого из них создаёт обьект и возвращает масив обьектов.
Это ближе, похожий метод подсказал OrmaJever, только он предлагает инкапсулировать этот метод в сам класс (только там передается не массив ID ингридиентов, а ID продукта)
о есть объект "Продукт" передает массив ID ингридиентов статическому методу класса "Ингридиент", он свою очередб берет одним запросом данные из БД и на основе их строит объекты, так?
не так.
откуда у продукта массив ID инградиентов? Это у инградиента есть ID продукта к которому он принадлежит. Классическая связь один ко многим.
по этому продукт говорит - верни мне массив инградиентов по такому то критерию - вот мой ID.
Тогда получается классс "Ингридиент" зависит от класса "Продукт", что не совсем логично, те же ингридиенты могут быть составляющими не только объекта "Продукт" но и объекта "Склад", тогда в классе "Ингридиента" надо писать еще обработичк для Склада.
Это у продукта есть ID ингридиентов, которые входят в его состав.
Ну это не принципиально в данном случае. Спасибо за наведение в правильную сторону ) (Добавление)
[quote=Moreo]
caballero пишет:
Цитата:
о есть объект "Продукт" передает массив ID ингридиентов статическому методу класса "Ингридиент", он свою очередб берет одним запросом данные из БД и на основе их строит объекты, так?
не так.
откуда у продукта массив ID инградиентов? Это у инградиента есть ID продукта к которому он принадлежит. Классическая связь один ко многим.
по этому продукт говорит - верни мне массив инградиентов по такому то критерию - вот мой ID.
Тогда получается классс "Ингридиент" зависит от класса "Продукт", что не совсем логично, те же ингридиенты могут быть составляющими не только объекта "Продукт" но и объекта "Склад", тогда в классе "Ингридиента" надо писать еще обработичк для Склада.
Это у продукта есть ID ингридиентов, которые входят в его состав.
Ну это не принципиально в данном случае. Спасибо за наведение в правильную сторону ) (я про фабриный статический метод
caballero Да, я тоже о подумал о создании объектов на основе уже загружженых данных, но задался вопросом, кто должен их загружать, то есть объект "теряет независимость" и появляется посредник.
caballero пишет:
Для загрузки используется фабричный статический метод класса объекта. И ни одна живая душа не узнает как работает объхект Ингредиент.
Хм... "фабричный статический метод", интересно, кажется примерно понимаю, то есть объект "Продукт" передает массив ID ингридиентов статическому методу класса "Ингридиент", он свою очередб берет одним запросом данные из БД и на основе их строит объекты, так?