Also.
Ich habe mal einen kleinen Versuch gestartet.
Es geht um das "Handling" des Paramters, bzw wie das ganze später navigiert wird.
Es kommt folgender Aufruf: index.php?show=Views_Newsletter_NewReceiver
Das Skript funktioniert. Nur ist es sinnvoll? Verbesserungsschläge bevor ich weitermache..
index.php
include('Config/settings.php'); $set_settings=new settings();
include('Helpers/tools.php');
include('Helpers/__autoload.php');
include('FrontController.php'); $FrontController=new FrontController();
Helpers/__autoload.php
<?php
function __autoload($klasse){
$file = null;
// die bösesten zeichen in klassennamen mal sicherheitshalber verbieten
if (strpos ($klasse, '.') !== false || strpos ($klasse, '/') !== false
|| strpos ($klasse, '\\') !== false || strpos ($klasse, ':') !== false) {
return;
}
// Aufruf auseinandernehmen
$path=explode('_',$klasse);
// Path-Size
$pathCount=count($path);
// Pfad erstellen
for($i= 0; $i<$pathCount; ++$i){
$file.=$path[$i];
$file.=($i==$pathCount-1) ? ".php" : "/";
}
// Klasse inkludieren
if(file_exists($file)) {
include_once ($file);
}
}
?>
FrontController.php
<?php
class FrontController{
private $_dispatcherObject = null;
private $_dispatcherArray = null;
public function __construct(){
if(isset($_REQUEST))
{
$this->_sendRequest($_REQUEST);
}
$this->_setIndexSite();
}
// gibt Requests an den Dispatcher weiter
private function _sendRequest($request)
{
$this->_dispatcherObject=new Dispatcher_Dispatcher($request);
$this->_dispatcherArray=$this->_dispatcherObject->DispatcherHelper();
}
// stellt Seite zusammen
private function _setIndexSite(){
# Header
$Main = new $this->_dispatcherArray['View_Main'];
echo $Main->toShow;
}
}
?>
Dispatcher/Dispatcher.php
class Dispatcher_Dispatcher{
public $informations=array();
private $_request;
public function __construct($request)
{
$this->_request=$request;
}
public function DispatcherHelper()
{
if($_POST) $this->workWithPosts();
if($_GET) $this->workWithGets();
return $this->informations;
}
private function workWithPosts()
{
if(isset($_POST['FormReceiver']))
{
$Object = new $_POST['FormReceiver']();
}
}
private function workWithGets()
{
// Hauptanzeige
if($_GET['show']){
array_push($this->informations, 'View_Main');
$this->informations['View_Main'] = $_GET['show'];
unset($_GET['show']);
}
}
}
Views/Newsletter/newReceiver.php
<?php
#########################################################################################
// Zeigt das Formular zum Eintragen eines Newsletterempfängers
#########################################################################################
class Views_Newsletter_newReceiver{
public $toShow = null;
public function __construct(){
$this->toShow="
<form method='post'>
<input type='checkbox' name='newsletterbox'>Ja, ich möchte den ".settings::$vars_project['Projektname']."-Newsletter empfangen!
<p>Bitte folgende Daten eintragen:</p>
<table>
<tr><td>Name:</td><td><input type='text' name='2i17tbs1o' /></td></tr>
<tr><td>E-Mail:</td><td><input type='text' name='bkqx2u6rd2b3' /></td></tr>
".tools::antiSpam(1,'','')."
<tr><td></td><td><input type='submit' name='newsletter_entry' value='Eintragen' /></td></tr>
</table>
</form>
";
}
}
?>
Ich denke Code ist noch verständlich genug, ich weiß es ist ein bisschen wenig kommentierung.
Liebe Grüße,
Klaus