Блок Controller
08 марта 2010 | Автор: Chitozzz |Продолжаем делать блог… Сегодня напишу про блок “Контроллер”…
Создаем класс контроллера
class controller {…}
Именно контроллер будет взаимодействовать с пользователем и в общем то управлять всеми действиями, для этого создадим следующие свойства класса:
private $error;
private $result;
function __construct() {
$this->error = false;
$this->result = false;
}
Первый метод будет стартовый… с него все и начнется:
function start() {
$this->validate();
$this->index();
}
Это функцияя состоит из вызова двух функций… первая функция validate() проверяет было ли какие-нибудь запросы пользователя, если ничего не было, то включается функция по умолчанию index().
Идем дальше :
function validate() {
if (isset($_POST['logout']))
{
if (isset($_SESSION['user_id']))
unset($_SESSION['user_id']);
}
//проверяет был ли запрос на добавление поста
if (isset($_POST['addpost']) and isset($_SESSION['user_id'])){
$this->addPost();
}
//проверяет была ли нажата кнопка добавить пост
if (isset($_POST['savepost'])){
$this->savePost();
}
if (isset($_GET['p'])){
$this->singlePost();
}
//проверяет была ли нажата кнопка вход
if (isset($_POST['inter'])){
$this->Inter();
}if (isset($_POST['in'])){
$this->Login();
}
if (isset($_POST['register']) or isset($_POST['addregister'])){
$this->register();
}
if (isset($_GET['del']) and isset($_SESSION['user_id'])){
$this->deletePost();}
}
Функция validate() просто проверяет есть ли что-нибудь в массивах $_POST и $_GET, в зависимости от запроса, вызывает соответствующую функцию… добавление поста или регистрации и т.д. Естественно в некоторых условиях есть еще и проверка зарегистрирован ли пользователь.
Расписываем дальше функции…
function index() {
view::displayHeader();
view::displayMenuLine();
view::displayMenu();
$this->show_posts();
view::displayFooter();
}
Эта функция выводит страницу по умолчанию… если никакого действия не было со стороны пользователя, то просто выводятся все посты.
function show_posts(){
$model = new model();
$model->get_post();
while ($model->have_post()){
view::displayPost($model->get_data());
}
$model->close_db();
В функция show_posts() выводит все посты, тут используется объект “Модель”. Запрашевается посты и через цикл они все выводятся. Пока постраничной навигации нет, но скоро добавим.
function singlePost() {
$model = new model();
$model->get_single_post();
$model->have_post();
view::displayHeader();
view::displayMenuLine();
view::displayMenu();
view::displayPost($model->get_data());
view::displayFooter();
exit();
}
singlePost() это функция выводящая один пост.
function addPost() {
view::displayHeader();
view::displayAddPost();
view::displayFooter();
exit();
}
function savePost() {
$model = new model();
$model->save_post();
}
function deletePost(){
$model = new model();
$model->delete_post();
Эти функции можно не описывать они для добавления поста, сохранения и удаления.
Далее функции касаются авторизации пользователя, регистрации и входа для того чтоб получить возможность добавлять посты:
function Inter() {
if (isset($_SESSION['user_id']))
{
$this->addPost();
}else
{ view::displayHeader();
view::dispayLogin();
view::displayFooter();
}
exit();
}
function Login() {
$model = new model();
$model->auth();
$auth=$model->get_data();
if($auth[0]==true){
$this->addPost();
}else{
view::displayError($auth[1]);
}
exit();
}
function register() {
if (isset($_POST['addregister'])){
$model = new model();
$model->reg();
$reg=$model->get_data();
if($reg[0]==true){
$this->addPost();
}else{
view::displayError($reg[1]);
}
}
view::dispayRegister();
exit();
}полностью код “контроллера” можно скачать controller.php
Похожие записи
Теги: MVC, Движок сайта


