Блок 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

Похожие записи

Теги: ,

Leave a Reply

ChitozzzBlog ChitozzzBlog