табличка с хабра
я для тебя код нарисовал, специально выдумывал сидел задачу, интересную, практичную, и весёлую
Хватит языком трепать, покажи свой процедурный стиль в деле.
предлагаю реализовать несложную архитектурную задачу. Ну к примеру архитектурный паттерн 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>";
}
}