Доступ к переменным через классы - PullRequest
1 голос
/ 13 марта 2011

Допустим, у меня есть базовый класс программы, который создает экземпляр объекта Page.

Этот объект Page имеет свойство $id (которое является идентификатором страницы, на которой мы в данный момент работаем)on).

В классе Page он просматривает базу данных и устанавливает шаблон для страницы, создавая экземпляр объекта Template.

В этом Template объекте Iхочу поместить в блок контента.Это обрабатывается классом Content, который я не определяю в классе Template.

Теперь для правильной работы этого содержимого мне нужно иметь возможность получить $id от принадлежащего объекту Pageпо ядру программы.Есть какой-либо способ сделать это?Кажется довольно неудобным проходить через идентификатор страницы, особенно когда до него доходит, что между классами может быть 10 сек. Слоев *

Если я сделаю переменную $ id статической (static $id;), то смогу ли я получитьснова, используя Page::$id вместо того, чтобы обращаться к фактическому экземпляру объекта, в котором я его установил?

Спасибо

Том

1 Ответ

2 голосов
/ 13 марта 2011

То, что вы ищете, часто обрабатывается " внедрение зависимости ".При создании объекта Template в конструкторе Template достаточно передать объект, подобный вашему Page объекту.Сам объект Page может быть свойством Template или только его свойством $ id.Поэтому нет необходимости передавать идентификатор при каждом вызове функции.

Template::__construct($Page)

Если класс Template связан с классом Page, он также может расширять класс Page, в результате чегоон уже имел бы доступ к Page::$id, если бы это свойство было protected или public.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...