Как мой подход к повторному использованию логики представления в моем проекте?
цель
Для реализации правильной и эффективной архитектуры представления для моего проекта (с максимальным повторным использованием повторяющихся единиц)
О моем проекте
Мой проект включает в себя занятия, проводимые наставниками, и пакеты, публикуемые наставниками. Каркас не использовался, но объектная ориентация и иерархии классов присутствуют для модели, части контроллера.
У меня есть следующие модули -
- Поиск-> Списки классов - список классов, отображаемых в результатах поиска.
Студенческая комната-> Список классов - Список классов, приобретенных студентом
Search->Class Details - страница сведений о классе в поисковом модуле
- Студенческая комната-> Сведения о классе - Страница сведений о классе в Студенческой комнате
и так же для пакетов -
- Поиск-> Список пакетов - список пакетов, отображаемых в результатах поиска.
Комната для учеников-> Список пакетов - Список пакетов, приобретенных студентом.
Search->Pack Details - страница сведений о пакете в поисковом модуле
- Студенческая комната-> Информация о пакете - Страница сведений о пакете в Студенческой комнате.
Мой текущий план
Я планирую иметь такие классы:-
Class Name Contents
commonListingDisplay paginationHtml()
smallRatingHtml()
commonDetailsDisplay commentsHtml()
largeRatingHtml()
commonClassPackListingDisplay extends commonListingDisplay
abbreviatedDetailsHtml()
(abbreviated class/pack
details html (class/pack details
ending with ... and a link to the
Class/pack details page).
commonClassPackDetailsDisplay extends commonDetailsDisplay
currently empty
commonClassDisplay classDateTimeHtml()
classReminderHtml()
classDetails extends commonClassPackDetailsDisplay,commonClassDisplay
- Я знаю, что PHP не поддерживает множественное наследование, но это может быть подделано, как указано в разделе " Могу ли я расширить класс, используя более 1 класса в PHP?
Теперь на примере модуля - Пока в Search-> Сведения о классе- - Из файла search_class_details.controller.php, инициируйте объект класса classDetails, чтобы были доступны все повторно используемые функции. - Передайте все переменные и объект classDetails в class_details.view.php (который является файлом представления модуля class_details). Файл будет выглядеть примерно так:
<div class="class_details">
<h2><?php echo $className ?></h2>
<div><?php echo $classDetails ?></div>
<?php $classDetailsObj->largeRatingHtml($ratingValue) ?>
<?php $classDetailsObj->commentsHtml($commentsArray) ?>
</div>
Как выглядит подход? Предложения от опытных людей хотели.
Спасибо