Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чем в PHP заменить friends C++? 
:(
    Опции темы
owlet
Дата 5.3.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



Пишу очередной "велосипед" - движок сайта с модулями...
Хочу разграничить права доступа к экземплярам классов ядра для разработчиков разных типов модулей. 

Так как в PHP нет аналога friends в C++, то пока что делаю таким образом: создаю абстрактный класс - прототип будущего класса B, который будет как бы friends классу A. В конструкторе класса В устанавливаю ссылку на экземпляр класса А. Так как экземпляр класса А является privat свойством класса ядра, то доступ к нему получают только те модули, в конструкторе которых была осуществлена привязка через ссылку (т.е. экземпляры класса В).  Конструктор сласса В объявляю final дабы не поломалось все случайно.

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

Это сообщение отредактировал(а) owlet - 5.3.2007, 14:10
PM MAIL   Вверх
nerezus
Дата 6.3.2007, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Скажи не то, что ты делаешь, а то, что тебе надо.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
owlet
Дата 7.3.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



Что мне надо:

Нужно написать CMF со стандартными интерфейсами модулей. Так как опыта в программировании достаточного нет, хотелось бы написать так, чтобы ядро можно было бы переписывать, не нарушая нормальной работы модулей, в каких-то пределах, разумеется. На данный момент остановился на том, что агрегирую все объекты ядра в контроллере, который в свою очередь раздает ссылки на необходимые объекты непосредственно разным типам модулей. Используется php5, ООП. 

А вообще вопрос не о том, как сделать что-то конкретное, а о том, какими способами можно заменить friends С++ - мне этот подход кажется довольно удобной вещью, и я бы охотно его использовал. 
PM MAIL   Вверх
nerezus
Дата 7.3.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата

На данный момент остановился на том, что агрегирую все объекты ядра в контроллере, который в свою очередь раздает ссылки на необходимые объекты непосредственно разным типам модулей
 static getInstance у нужного класса может проще сделать? паттерн Singleton
Кстати нельзя вернуть ссылку на агрегируемый объект впринципе ) Т.к. это уже композицией будет называться, а не агрегацией.
А модули делай через AbstractFactory, при этом у класса-предка можно уже реализовать типовые методы, которые будешть использовать.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
owlet
Дата 7.3.2007, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



Цитата

static getInstance у нужного класса может проще сделать? паттерн Singleton

Да, пожалуй, проще! 
Цитата

Кстати нельзя вернуть ссылку на агрегируемый объект впринципе ) Т.к. это уже композицией будет называться, а не агрегацией.

Ясно, спасибо.

Цитата

А модули делай через AbstractFactory, при этом у класса-предка можно уже реализовать типовые методы, которые будешть использовать.

Да, так и делаю.

Спасибо за ответ, понятно теперь, что зря я паттерны не знаю smile - пойду в поиск.

Это сообщение отредактировал(а) owlet - 7.3.2007, 16:20
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0878 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.