class CController{
protected $m_func_array; // Funktions array
protected $m_cntrl_array; // Controller array
public $m_view;
protected function __getViewHandler(){
return $m_view;
}
public function CController(){
}
public function setView(&$m_view)
{
$this->m_view=$m_view;
}
protected function insertController(&$functocall, $cntrl)
{
$this->m_func_array[]=$functocall;
$this->m_cntrl_array[]=$cntrl;
}
public function run() // Overwriting in Page/Modul Controller
{
}
}
include ('includes/controller.class.php');
class CPageController extends CController
{
function createNewPage($func, $name) // Erstellt eine Neue Seite, ruft im prinzip nur $this->insertController
{
$this->insertController($func, $name);
}
protected function noControllerSet()
{
$this->index();
}
function CPageController()
{
CController::CController();
}
public function index()
{
// Model einbinden und schauen was passiert
}
public function page404($page){
print "page404" . $page; // Fatal Error: Page not found
}
public function run() // Wertet dei Parameter aus !!
{var_dump($this->m_func_array);
if (!isset($_GET['page']) && !isset($_POST['page']))
{
return $this->index();
}
$i=-1; // -1 da erste interation vor abhandlung stattfindet;
foreach($this->m_cntrl_array as $cntrl)
{
++$i; // Hier iterieren wir für m_func_array
if ($_GET['page']==$cntrl || $_POST['page']==$cntrl)
{
if (isset($_GET))
{
if (count($_GET)==1)
{
unset($_GET);
}
if (isset($_GET))
{$func=$this->m_func_array[$i];
return $this->$func($_GET); // Wenn ein oder mehr Parameter angegeben wurde $_GET übergeben an Funk.
}
else
{
$func=$this->m_func_array[$i]; // Wenn kein $_GET übergeben wurde ohne irgendetwas aufrufen
return $this->$func();
}
}
elseif (isset($_POST))
{
if (count($_POST)==1)
{
unset($_POST);
}
if (isset($_POST))
{$func=$this->m_func_array[$i];
return $this->$func($_POST); // Wenn ein oder mehr Parameter angegeben wurde $_GET übergeben an Funk.
}
else
{
$func=$this->m_func_array[$i]; // Wenn kein $_GET übergeben wurde ohne irgendetwas aufrufen
return $this->$func();
}
}
}
}
return $this->page404(); // Nicht gefunden aufrufen
}
}
class mypagecontroller extends CPageController
{
function mypagecontroller(){
CPageController::CPageController();
$this->createNewPage('news', 'news'); // Newspage
$this->createNewPage('templatetest', 'templatetest');
// Set View
$this->m_view = new CView;
}
public function Artikel(){
$cArt = new CArticleController;
$cArt->setView($this->m_view);
$cArt->run();
$this->m_view->render();
}
public function news(){
print "Newsseite Controller einbinden!";
}
public function run(){
CPageController::run();
}
public function templatetest()
{
}
}