| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Наследование и передача параметров |
| Автор: KDVMan 8.12.2016, 10:08 |
| Всем привет, возник вопрос есть свой движок вот такая структура входа получается (используется автолоадер классов) идет запрос страницы, запускается скрипт index.php где прогружаются все нужные модули и прочее (у админки свой index.php, у самого сайта свой index.php), далее загружается класс Index (у админки свой Index, у сайта свой Index), который наследуется от класса Base, который в свою очередь наследуется от SuperBase (имена для примера привел) в классе SuperBase подгружаются нужные классы и переменные, которые используются на всем сайте, а вот классы Base разные, у админки свой Base, у самого сайта (тот что видят люди) свой Base - соответственно в каждом Base подгружаются свои методы и переменные в итогде в классе Index содержатся все необходимое для работы админки или сайта (в зависимости, где мы это дело вызываем) так вот, на данный момент у меня все работает так как написано выше и вот так как напишу далее: т.е. после того как в Index классе мы подгрузили все что нам надо, он (класс Index) загружает необходимый класс (в зависимости что мы запросили), ну например категории настроек в админке ссылка будет вида: index.php?module=settings&script=category (просто для примера) т.е. будет вызван класс Category из пространства имен Settings (ну не суть), в свою очередь этот Category наследуется так же от Base (в данном случае Base относится к админке) и по сути проиходят двойные вызовы всего, что есть в Base и в SuperBase так вот вопрос, я сейчас хочу переделать все это дело вот в таком варианте: ссылка все так же ведет на index.php?module=settings&script=category (просто для примера) подгружается как я написал выше Index класс, который в свою очередь наследуется и получает все необходимое и он вызывает класс Category из пространства имен Settings и передает в конструктор класса Category $this (пример: $class = new Category($this)) и в классе Category я уже в конструкторе делаю присвоение function __construct($context) { $this->context = $context; $this->db = $this->context->db; и т.д } но получается тут происходит дублирование переменных т.е. мне придется делать $this->что-то = $context->что-то для всех переменных, которые есть в Base и в SuperBase классах как избежать такого дубляжа? может быть вообще эта структура не верна в корне и кто-то сможет посоветовать как лучше сделать структуру? т.е. задача, что бы все мои классы, которые вызывает Index имели доступ к методам, которые загружаются в Base и SuperBase (там помимо своих методов, в них инициализируются другие классы, например в которых просто полезные функции, так вот к ним так же доступ нужен) заранее благодарю если что непонятно написал, задавайте вопросы, постараюсь расписать более подробно |
| Автор: Angel_666 9.12.2016, 23:16 |
| Честно без обид. без кода тут врят ли, кто займется этим. очень много нюансов все, что ты описал надо лично потрогать ручками и посмотреть глазками. иначе все это будет походить на битву экстрасенсов. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Nasledovaniye-i-peredacha-parametrov-id584907114e6f477ba86b0c43#findElement_E7045_584b113520a8ef4e551554ba_0 |
| Автор: Angel_666 9.12.2016, 23:16 |
| Честно без обид. без кода тут врят ли, кто займется этим. очень много нюансов. все что ты описал надо лично потрогать ручками и посмотреть глазками. иначе все это будет походить на битву экстрасенсов. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Nasledovaniye-i-peredacha-parametrov-id584907114e6f477ba86b0c43#findElement_E7045_584b113520a8ef4e551554ba_0 |
| Автор: Angel_666 9.12.2016, 23:16 |
| Честно без обид. без кода тут врят ли, кто займется этим. очень много нюансов. все что ты описал надо лично потрогать ручками и посмотреть глазками. иначе все это будет походить на битву экстрасенсов. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Nasledovaniye-i-peredacha-parametrov-id584907114e6f477ba86b0c43#findElement_E7045_584b113520a8ef4e551554ba_0 |
| Автор: Angel_666 9.12.2016, 23:16 |
| Честно без обид. без кода тут врят ли, кто займется этим. очень много нюансов. все что ты описал надо лично потрогать ручками и посмотреть глазками. иначе все это будет походить на битву экстрасенсов. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Nasledovaniye-i-peredacha-parametrov-id584907114e6f477ba86b0c43#findElement_E7045_584b113520a8ef4e551554ba_0 |
| Автор: Angel_666 9.12.2016, 23:16 |
| Честно без обид. без кода тут врят ли, кто займется этим. очень много нюансов. все что ты описал надо лично потрогать ручками и посмотреть глазками. иначе все это будет походить на битву экстрасенсов. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Nasledovaniye-i-peredacha-parametrov-id584907114e6f477ba86b0c43#findElement_E7045_584b113520a8ef4e551554ba_0 |