Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Структура сайта (not mvc)
Форумы портала PHP.SU » » CMS и фреймворки » Структура сайта (not mvc)

Страниц (1): [1]
 

1. malina95 - 12 Мая, 2014 - 16:16:27 - перейти к сообщению
Привет, коллеги!

Если что, меня зовут Влад, я сюда давно не заходил)))

В общем, интересует вопрос о создании архитектуры сайта без mvc.

На данный момент, я делаю по аналогии с ниже представленной архитектурой:
Цитата:

Application
--Shop
----Modules
------ShopModules.php(abstract Modules - системный класс для передачи объектов)
----IndexPage.php
--Admin
----...
Core
--Config
--Cache
--DataBase
..etc..
.htaccess
index.php
manage.php(обработчик всех запросов)


router у меня настроенный только на гет запросы(чпу берутся из конфига), хочу сделать рест роутер, но тогда не могу додуматься каким образом делать обработчики и где их хранить, как вызывать, если пример IndexPage.php выглядит так:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. use Application\App\Modules\FrontModules;
  5.  
  6. class IndexPage extends FrontModules {
  7.        
  8.         public function getTitle() {
  9.                 return 'Интернет-Магазин Пряслице | Пряжа для вязания';
  10.         }
  11.        
  12.         public function getDescription() {
  13.                 return 'Интернет-Магазин Пряслице - Пряжа для вязания';
  14.         }
  15.        
  16.         public function getKeywords() {
  17.                 return 'Интернет-Магазин Пряслице - Пряжа для вязания';
  18.         }
  19.        
  20.         public function getTop() {
  21.                 //return $this->view->display('front_banner');
  22.         }
  23.        
  24.         public function getMiddle() {
  25.                 return $this->getFrontFilters([1, 3]);
  26.         }
  27.        
  28.         public function getBottom() {
  29.                 return 'content bottom';
  30.         }
  31.        
  32. }
  33.  


FrontModules наследуется от Modules, у которого есть метод для сбора данных, тоесть getTitle etc... это абстрактные методы определяющие обязательные данные страницы.

Вызов страницы происходит по такому типу:

PHP:
скопировать код в буфер обмена
  1.  
  2. $router->add('/', [
  3. 'module' => 'shop',
  4. 'page' => 'index'
  5. ]);
  6.  


Если поменять роутер на rest, то можно будет использовать множество методов передачи данных, и поэтому, можно будет не ограничиваться одним массивом, можно будет сделать closure и string вызовы экшенов.

Прошу помощи в улучшении архитектуры, но не убирая структуру классов страниц
(Добавление)
Народ, ну посоветуйте хоть что-нибудь путное пожалуйста...

Если вам не хватает какой-то инфы, то скажите, всё расскажу и покажу на пальцах.

Пожалуйста...
2. caballero - 12 Мая, 2014 - 17:22:07 - перейти к сообщению
чтобы советовать нужно как минимум понимать проблемму


а вообще непонятно почему страница наследуется от некоего модуля который занимается сбором данных
отсутствие MVC не означает что надо все свалить в кучу
3. malina95 - 12 Мая, 2014 - 18:31:25 - перейти к сообщению
caballero пишет:
чтобы советовать нужно как минимум понимать проблемму


а вообще непонятно почему страница наследуется от некоего модуля который занимается сбором данных
отсутствие MVC не означает что надо все свалить в кучу


Проблема в том, что классы страниц не могут быть обработчиками. Они просто отрисовывают страницу, и сборщик данных не собирает все в кучу, он собирает то, что отрисовывает класс страницы в шаблон, тоесть методы getTitle, getKeywords, ... getBottom, а класс FrontModules может переопределить метод сборки чтобы добавить или удалить данные из шаблона, так же может сменить шаблон.

А что не понятно в проблеме?
4. caballero - 12 Мая, 2014 - 18:37:44 - перейти к сообщению
Цитата:
Проблема в том, что классы страниц не могут быть обработчиками.

как раз они и должны быть обработчиками
на фига они тогда вообще
выводить страницу может и какой нибудь шаблонизатор

Цитата:
А что не понятно в проблеме?

не понятно где вообще проблема. Не считая проблемы отсутствия у вас необходимых знаний и опыта.
5. Мелкий - 12 Мая, 2014 - 18:38:36 - перейти к сообщению
caballero пишет:
отсутствие MVC не означает что надо все свалить в кучу

Тем более, что показан типичнейший MVC с тонкими/вырожденными моделями.
6. malina95 - 12 Мая, 2014 - 18:55:18 - перейти к сообщению
Как раз в mvc мне и не нравится копипаст при работе с шаблоном...

Вообщем ясно, сделаю папку Libs в корне, и буду выходить из проблемы
7. caballero - 12 Мая, 2014 - 19:46:24 - перейти к сообщению
Цитата:
Как раз в mvc мне и не нравится копипаст при работе с шаблоном

копипаст от неграмотного проектирования. MVC там или нет сути дела не меняет

 

Powered by ExBB FM 1.0 RC1