guten abend an die gemeinde,
ich hab ein kleines problem ... ich entwickle mir derzeit eine page in OOP soweit ichs kann ^^ aber hab jetzt ein anliegen
hier eine beispiel function:
das global $temp; stört mich ich kann auf die smarty class aber nicht ohne das global zugreifen:
die classen werden mit folgendem script geladen:
start.php
und das is der teil aus der factory.php
hab die abstract factory aus nem forum über google gefunden um das global problem zu lösen aber klappt leider nicht
würde mich freuen wenn mir jemand weiter hilft
danke
ich hab ein kleines problem ... ich entwickle mir derzeit eine page in OOP soweit ichs kann ^^ aber hab jetzt ein anliegen
hier eine beispiel function:
PHP Code:
public function footer()
{
global $temp;
$temp->assign(array(
'DEBUG' => $db->debug()
));
$temp->display('footer.tpl');
}
Fatal error: Call to a member function display() on a non-object in blablabla..
start.php
PHP Code:
$workpath = $_SERVER["DOCUMENT_ROOT"];
require_once("$workpath/lib/Factory.php");
define( '_CLASS_PATH_', '/home/mpl/www/lib/' );
try {
$conf = Factory::get( 'config::Config' );
$db = Factory::get( 'database::MysqlDB' );
$temp = Factory::get( 'smarty::Smarty' );
$user = Factory::get( 'user::userhandler' );
$page = Factory::get( 'mainpage::Mainpage' );
$bbcode = Factory::get( 'mainpage::BBcode' );
}catch( Exception $e ) {
echo $e->getMessage();
}
PHP Code:
class Factory {
public static function get($class_name, $params = null) {
if( !is_string($class_name) || ! trim($class_name) ) {
throw new Exception( 'kein gültiger Klassenname' );
}
// gibt es die Klasse überhaupt
$file = _CLASS_PATH_.strtolower( str_replace( '::', DIRECTORY_SEPARATOR, $class_name ).'.class.php' );
if( !file_exists( $file ) ) {
throw new Exception( 'Datei nicht gefunden' );
}
require_once $file;
try{
$tmp = explode( '::', $class_name );
$name = array_pop( $tmp );
$obj = new $name( $params );
}catch( Exception $e ) {
throw new Exception( 'Fehler beim Konstruieren des Objektes: '.$e->getMessage() ); }
return $obj;
}
}
würde mich freuen wenn mir jemand weiter hilft
danke
Comment