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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Правильное ли построение архитеутуры mvc?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Правильное ли построение архитеутуры mvc?
koks
Отправлено: 27 Июня, 2015 - 16:34:47
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Здравсвуйте!
Изучаю PHP OOP , решил построить приложение по шаблону МVC
Прощу подсказать знатаков ,может где неправильно делаю.
Заранее спасибо.

Вот так я вижу саму архитектуру
Cotroller-директория
Model-директория
View-директория
.htaccess
config.php
index.php
route.php

index.php -точка входа
<?php
require_once 'route.php';
require_once 'view/View.php';
require_once 'model/Model.php';
require_once 'controller/Controller.php';


$one=new Route();
$model=new Model();
$model->show();
$view=new View();


route-разбирает адресную строку , и в зависимости от передоного параметра подключает нужный контролер
<?php
require_once 'config.php';
class Route{

public $controller="Index";

function __construct(){
if(rtrim($_SERVER['REQUEST_URI'],' /')==""){
require_once 'controller/Controller.php';
$this->controller =new Index();
return true;
}

if(file_exists('controller/'.$_SERVER['REQUEST_URI'].'.php')){
$url= trim($_SERVER['REQUEST_URI'], ' /');
require_once 'controller/'.$url.'.php';
$this->controller =new $url();
}
else{
echo 'wrong';
exit;
}
}
}


файл .htaccess перенаправляет все запросы в index.php
<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymlinks
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [NC,L]
</IfModule>
 
 Top
tato
Отправлено: 30 Июня, 2015 - 09:51:38
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




в index.php только роутер, он парсит запрос и на его основе дергает нужный контроллер и нужное действие в нем

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. controllers/
  3.   DefaultController.php
  4.   PostController.php
  5.   ...
  6.  


PHP:
скопировать код в буфер обмена
  1.  
  2. class DefaultController {
  3.     public function actionIndex() {
  4.         ...
  5.     }
  6.  
  7.     public function actionAbout() {
  8.         ...
  9.     }
  10. }
  11.  



Получиться что-то такое:
PHP:
скопировать код в буфер обмена
  1.  
  2. class Route {
  3. ...
  4.     public function run() {
  5.         $this->parseUrl();
  6.         // теперь нам доступны след. члены
  7.         $controller = $this->getController();
  8.         $action = $this->getAction();
  9.         $params = $this->getParams();
  10.  
  11.         require_once("controllers/{$controller}.php");
  12.  
  13.         call_user_func_array([$controller, 'action' . ucfirst($action)], $params);
  14.     }
  15. ...
  16. }
  17.  



Модели вызываются уже в контроллере.
PHP:
скопировать код в буфер обмена
  1.  
  2. class PostController {
  3. ...
  4.     public function actionPost($id) {
  5.         $model = Post::findByPk($id);
  6.         $this->render('post_page', ['model'=>$model]);
  7.     }
  8. ...
  9. }
  10.  



ну а представление это набор шаблончиков:
views/post_page.php
[HTML]
<small><?php $model->created; ?></small>
<h4><?php echo $model->title; ?></h4>
<p><?php echo $model->body; ?></p>
[/HTML]

(Отредактировано автором: 30 Июня, 2015 - 09:54:05)



-----
просто ?: сложно
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB