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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наследование и передача параметров 
:(
    Опции темы
KDVMan
Дата 8.12.2016, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет,
возник вопрос
есть свой движок
вот такая структура входа получается (используется автолоадер классов)

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

заранее благодарю
если что непонятно написал, задавайте вопросы, постараюсь расписать более подробно
PM MAIL   Вверх
Angel666
Дата 9.12.2016, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Честно без обид. без кода тут врят ли, кто займется этим. очень много нюансов все, что ты описал надо лично потрогать ручками и посмотреть глазками. иначе все это будет походить на битву экстрасенсов.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Angel666
Дата 9.12.2016, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Честно без обид. без кода тут врят ли, кто займется этим. очень много нюансов. все что ты описал надо лично потрогать ручками и посмотреть глазками. иначе все это будет походить на битву экстрасенсов.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Angel666
Дата 9.12.2016, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Честно без обид. без кода тут врят ли, кто займется этим. очень много нюансов. все что ты описал надо лично потрогать ручками и посмотреть глазками. иначе все это будет походить на битву экстрасенсов.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Angel666
Дата 9.12.2016, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Честно без обид. без кода тут врят ли, кто займется этим. очень много нюансов. все что ты описал надо лично потрогать ручками и посмотреть глазками. иначе все это будет походить на битву экстрасенсов.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Angel666
Дата 9.12.2016, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Честно без обид. без кода тут врят ли, кто займется этим. очень много нюансов. все что ты описал надо лично потрогать ручками и посмотреть глазками. иначе все это будет походить на битву экстрасенсов.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

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


 




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


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

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