Klaus: OOP Konflikt

Beitrag lesen

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&ouml;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