Witam, czytając o MVC, stworzyłem własne rozwiązanie i chciałbym abyście oceni mój kod, gdzie mniej więcej przedstawiam system działania:
// struktura najważniejszych plików
/a-control // folder gdzie mamy klasy
+ klasy
/mod-view // folder z plikami html
+ pliki z html
index.php
index.php
<?php
header('Content-type: text/html;charset=utf-8'); date_default_timezone_set('Europe/Warsaw');
include('./a-control/aStart.php'); // klasa, która waliduję mi dane (np: aStart::spr_int($dane);) i w niej ustawiam połączenie z bazą.
include('./a-control/aLoadClass.php'); // jak sama nazwa mówi
// ustawienia loadera class
$firstLoader = new ClassLoader('i', './a-control/');
$firstLoader->register();
// generowanie strony
if(empty($_GET['v'])) { $_GET['v'] = 'start'; } $u = iPage::loadClass($_GET['v']); // wywołanie odpowiedniej kasy
$u->view();
?>
iPage.php // ustala to co ma być wyświetlone
<?php
abstract class iPage
{
public static $_page = 'start'; public $fd_www = '/www/'; // folder z strona
public static $db_key = 'baza'; // baza danych - prefix public $_msg = '';
// wyczytywanie odpowiedniej klasy
public static function loadClass
($page) {
self::$_page = aStart::spr_txt($page);
'index' => 'iView_Index',
);
if(!empty($i_class[self::$_page])) {
return new $i_class[self::$_page];
}
else
{
return new iStart;
}
}
// generowanie strony
public function view()
{
$file = $this->fd_www.'/mod-view/'.self::$_page.'.php';
{
include($file);
}
else
{
self::$_page = 'error';
include($this->fd_www.'/mod-view/error.php');
}
}
// koniec
}
?>
a-control/iView_Index.php
<?php
class iStart extends iPage
{
public function __construct() {
// tutaj sobie sprawdzam co ma być wywołane, np:
if(isset($_GET['zaloguj'])) { $this->zaloguj(); } }
public function zaloguj()
{
// zapytanie do bazy, czy coś w tym stylu
}
public function dom()
{
return 'Ale Twoja chata to ruina.';
}
}
?>
mod-view/index.php - widok
<html>
<head>
<title>Dom</tilte>
<//head>
<body>
<?php echo $this->dom(); ?> </body>
</html>
Teraz chciałbym dowiedzieć się czy takie rozwiązanie jest złe. Jakie stwarza problemy takie rozwiązanie?