Показать сообщение отдельно
  #27 (permalink)  
Старый 19.07.2012, 18:12
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

табличка с хабра
я для тебя код нарисовал, специально выдумывал сидел задачу, интересную, практичную, и весёлую

Хватит языком трепать, покажи свой процедурный стиль в деле.

предлагаю реализовать несложную архитектурную задачу. Ну к примеру архитектурный паттерн HMVC. Кто не в курсе это когда один контролёр может вызвать функцию другого контролёра. Профит офигенный, от этого решения.

Достаточно реализиции одних контролёров, хотя бы на псевдокоде.

пример вызова приложения
index.php?contr=test&cmd=index
результат
<ul> <li>меню 1</li> <li> меню 2</li> <ul>
bla bla это контент


код ядра
//фабрика контролёров, возвращает экземпляры контролёров
// при создании экземпляра проверяются права доступа
class manager{
    static function getComponent($name){
        requere ("controller/".$name.php");
        $n="controller".$name;
        $result=new $name;
        
        if ($result->rights()) return $result;
        else die ("доступ закрыт");
    }
}

// базовый класс всех контролёров
class controller{
    public function init(){

    }
    public function rights($usr){
        return true;
    } 
}

//базовый класс приложения, инкапсулирует в себе настройки, глобальные переменные приложения, и базовый функционал
class Capp{
    
    function Capp(){
        //здесь приложение инициализруется, грузит конфиги и занимается прочей фигнёй
    }
    
    public function go(){
        // фабрика вернёт экземпляр контролёра
        $cmp=manager::getComponent($_GET['contr']);
        // это типо события, я инициализирован
        $cmp->init();

        //вызовем метод контролёра 
        $cmd="cmd_".$_GET['cmd'];
        $cmp->$cmd();
    }
}

$app=new Capp();
$app->go();


первый контролёр controller/Test
class controllerTest extends controller{
    function cmd_index(){
        $cmp=manager::getComponent("menu");
        $result=$cmp->cmd_menu();
        $result.="bla bla это контент";
        echo $result;
    }
}


второй контролёр controller/Menu
class controllerMenu extends controller{
    function cmd_index(){
        echo "hello";
    }
    function cmd_menu(){
        return "<ul> <li>меню 1</li> <li> меню 2</li> <ul>";
    }   
}
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 19.07.2012 в 21:25.
Ответить с цитированием