Все,Динамический сайт PHP с MVC - Какой шаблон навигации?
Я изучаю пример кода, приведенный в моем классе веб-dev в качестве примера MVC (опять же для Интернета). В этом коде есть система для перехода с страницы index.php
на различные контроллеры (которые затем вызывают модули Model и View), а затем обратно в index.php
.
Я понимаю, как работает MVC.
То, с чем я борюсь, - это механизм навигации. У меня возникают трудности с пониманием того, как все части работают вместе.
Может ли кто-нибудь взглянуть на приведенный ниже код и рассказать мне, соответствует ли это хорошо известному методу/шаблону для динамической навигации по сайту? (Может быть, Front Controller?) Если да, то я надеюсь, что я могу сделать еще несколько исследований.
Большое спасибо!
JDelage
Index.php
<?php
require_once("User.php");
session_start();
if (isset($_GET['action']))
$action= $_GET['action'];
else
$action="";
switch ($action) {
case 'login':
require_once('Login.php');
$command= new LoginControler();
break;
case 'logoff':
require_once('Logoff.php');
$command= new LogoffControler();
break;
// Several other cases
default:
require_once('Unknown.php');
$command= new UnknownControle();
}
$command->execute();
require_once('EntryMenu.php'); // Those are objects that represent both the
// menu label and the links.
$menu= array(
new EntryMenu("Login", "index.php", array("action" => "logon")),
new EntryMenu("Logoff", "index.php", array("action" => "logoff")),
new EntryMenu("Write", "index.php", array("action" => "write")),
new EntryMenu("Read", "index.php", array("action" => "read"))
);
if ($command->redirect) {
header('Location: ' . $command->redirect);
} else if ($command->page) {
include("ui/header.php");
include("ui/menu.php");
echo "<div class='content'>";
include("ui/". $command->page);
echo "</div>";
include("ui/footer.php");
}
?>
Controler.php
<?php
class Controler {
public $page= "problem.php";
function execute() {}
}
?>
LogoffControler.php
<?php
require_once('Controler.php');
class LogoffControler extends Controler {
function execute() {
$this->redirect= "index.php";
unset($_SESSION['user']);
}
}
?>
LoginControler.php
<?php
require_once('LoginModel.php'); // This manages the exchanges with the user db
require_once('Controler.php');
class ConnexionControle extends Controler {
public $page= "LoginForm.php";
function execute() {
// More code to deal with incorrectly filled login forms
$login = new LoginModel();
$login->loginUser($_POST['login'], $_POST['password']);
if ($login->userLogedIn()) {
$_SESSION['user']= $login->user;
$this->redirect= "index.php";
}
// More code to deal with invalid logins
}
}
?>
Очень круто, но я не могу это прочитать. – JDelage 2010-11-25 15:51:54