Наследование и передача параметров

 
0
 
PHP
ava
KDVMan | 08.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 (там помимо своих методов, в них инициализируются другие классы, например в которых просто полезные функции, так вот к ним так же доступ нужен)

заранее благодарю
если что непонятно написал, задавайте вопросы, постараюсь расписать более подробно
Kommentare (1)
ava
Angel_666 | 09.12.2016, 23:16 (Edited 09.12.2016 23:17) #
Честно без обид. без кода тут врят ли, кто займется этим. очень много нюансов. все что ты описал надо лично потрогать ручками и посмотреть глазками. иначе все это будет походить на битву экстрасенсов. 
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden