Свойство PHP Class / метод синхронизации - PullRequest
1 голос
/ 02 декабря 2011

Пересмотрено - у меня есть несколько определений классов, распределенных по файлам (по одному классу на файл).То, что я пытаюсь сделать, это;У меня есть класс с именем Master, для которого я создаю экземпляр, и, в свою очередь, объект Master создает экземпляры остальных из моих определенных классов.Master имеет все мои свойства, определенные внутри него.

В тех случаях, когда Master создает, я хочу иметь возможность использовать свойства / методы Master прямо из $this, то есть $this->methodInMaster, без необходимости передачи объекта Master в новый экземпляр, его сохранения и вызова $this->MasterInstance->methodinMaster.Есть ли способ достичь этого?

Ключевое слово extends здесь мне совсем не поможет;классы, которые Master создает экземпляры, будут наследовать свойства и методы Master, но любые изменения, которые эти экземпляры вносят в свойства Master, не "сохраняются" в объекте Master, просто объект, который сделалперемены.Другими словами, изменения не видны ни в одном другом классе.

Я считаю, что это ограничение не делает вещи статичными, чтобы не было «экземпляров», но есть ли способ обойти всеэто с помощью магических методов call, set и get?

1 Ответ

1 голос
/ 02 декабря 2011

Расширения не помогают вам, потому что это не то, что вам нужно: если вы хотите, чтобы один объект был доступен во многих случаях, вы хотите, чтобы Singleton (он имеет , чтобы бытьстатический, потому что альтернатива имеет какую-то непрактичную форму совместного использования одной ссылки).Для структуры, которую вы хотите, вам понадобится синглтон, который отличается от от мастер-класса, но он доступен для него.В основном ваш рабочий процесс будет:

  • реализовать вашу функциональность в синглтоне
  • получить доступ к синглтону методами Master
  • расширить мастер как обычно

Таким образом, каждый вызов в подклассе будет «прозрачно» перенаправлен на вызов в одиночку.Это не очень элегантно (в отличие от прямого доступа к синглтону в подклассах), но это должно работать для вашего дизайна.

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