Właśnie zaczynam pisać jajko dla systemu aukcyjnego. Jestem świadom tego, że serwis będzie obciążony i dlatego chcę możliwie najlepiej rozwiązać kwestię jądra. Przy wcześniejszych projektach używałem silnika napisanego strukturalnie podpartego smarty.
Chcę stworzyć główną klasę 'VenteSystem', która będzie odpowiedzialna za połączenie z bazą danych oraz załadowanie error handlera i smarty.
Jej kod wygląda tak:
<?php
define( 'LIB_DIR', 'F:/www/localhost/libs/' );
class VenteSystem
{
function VenteSystem( )
{
echo \"[system]Laduje potrzebne biblioteki<br>\";
require_once LIB_DIR .'smarty/Smarty.class.php';
require_once LIB_DIR .'driver/mysql.php'; // w przyszlosci dodanie wyboru mysql/pgsql
require_once LIB_DIR .'error_handler.php'; //sam ustawia sie jako domyslny
$this->smarty = & new Smarty;
$this->db = & new sql_db('localhost', 'splatch', 'splatch', 'splatch');
}
function VenteOutput( )
{
echo \"[system]Pokazuje gotowa strone<br>\"; $this->VenteDie( );
//return $this->smarty ? $this->smarty->display( 'index.tpl' ) : '';
}
function VenteDie( )
{
$this->db->close( );
echo \"[system]Zamykam polaczenia z baza<br>\"; }
}
?>
Teraz w kodzie strony głównej mam
<?php
$system = new VenteSystem( );
echo \"..sprawdzam url..<br>\"; switch( $_GET['action'] )
{
case 'auction':
echo \"..laduje dane o auckji..<br>\"; include 'modules/auction.php'; //wczytuje klase auction
$object = new auction( $system );
$object->parse(); //dodanie do szablonu
break;
default:
echo \"<b>nieznana akcja<b>\"; break;
}
echo \"..zamykanie polaczenia z baza danych..<br>\"; $system->db->close( );
$system->VenteOutput( );
?>
Kod klasy auction wygląda tak:
<?php
class auction
{
function auction( &$object )
{
$this->system = $object;
echo \"[auction]Do konstruktora przekazana zostala kopia obiektu VenteSytem<br>\"; if( !empty( $_GET['id'] ) ) {
echo \"[auction]Pobierz dane o aukcji nr \". $_GET['id'] .\"<br>\"; }
else
{
echo \"[auction]Pobierz liste auckji<br>\"; }
}
function parse( )
{
echo \"[auction]Przygotuj do wyswietlenia<br>\"; //$this->system->smarty->assign( 'mainpage', 'tresc' );
}
}
?>
Całość (oprócz administracji) będzie obsługiwana przez stronę główną przy użyciu mod_rewrite. Serwer jest tak skonfigurowany, że url powinen być w postaci:
vente.pl/wyraz/liczba[/dodatkowe parametry].
Nie jestem pewien czy takie rozwiązanie jest poprawne. Oczywiście nie byłoby problemu z przerobieniem switch na if( file_exists() ), dodania. Czy wszystko ma realizować jądro.
Czekam na Wasze opinie i rady, za każdą będę wdzięczny.