Здравсвуйте!
Изучаю 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>
1. koks - 27 Июня, 2015 - 16:34:47 - перейти к сообщению
2. tato - 30 Июня, 2015 - 09:51:38 - перейти к сообщению
в index.php только роутер, он парсит запрос и на его основе дергает нужный контроллер и нужное действие в нем
CODE (htmlphp):
скопировать код в буфер обмена
скопировать код в буфер обмена
- controllers/
- DefaultController.php
- PostController.php
- ...
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- class DefaultController {
- public function actionIndex() {
- ...
- }
- public function actionAbout() {
- ...
- }
- }
Получиться что-то такое:
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- class Route {
- ...
- public function run() {
- $this->parseUrl();
- // теперь нам доступны след. члены
- $controller = $this->getController();
- $action = $this->getAction();
- $params = $this->getParams();
- require_once("controllers/{$controller}.php");
- }
- ...
- }