Instanzierte Klasse in anderer Klasse daufzugreifen

ne0hype

Erfahrenes Mitglied
Hallo,

der Titel sag es schon ;)
Aber hier nochmal ein Beispiel:

Es wird die Smarty Klasse instanziert und da ich noch andere Klassen habe wollte ich in der Klasse Test auf die Smarty Klasse zugreifen,

Zur veranschaulichung:
PHP:
<?php

require '../libs/Smarty.class.php';

$smarty = new Smarty;

class test
{
	public function __construct(){
		$smarty->assign("Name","Fred Irving Johnathan Bradley Peppergill");
	}
}

$bla = new test();

$smarty->display('index.tpl');
?>

Naja wie ihr euch denken könnt geht das nicht. Wie ist der richtige Weg? Die Klasse von Smarty ableiten? Bei 20 Klassen die auch wiederum von einander erben, ne schwierige Sache.

Danke für eure Hilfe
 
Hi,

ich kann bei diesem Registry aber nur auf "Globale" Variablen zugreifen. Wie sieht es aus wenn ich wie im Beispiel auf eine Methode der Klasse Smarty zugreifen will?

Gruß
 
Schau dir das mal richtig an, du kannst auf alle Funktionen zugreifen, du legst doch in der Klasse Registry das Objekt ab, greifst auf das Objekt zu und führst mit dem Objekt die Funktionen aus.

PHP:
<?php
require '../libs/Smarty.class.php';
$smarty = new Smarty;
Registry::set('smarty', $smarty);
class test
{
    public function __construct(){
        $smarty = Registry::get('smarty');
        $smarty->assign("Name","Fred Irving Johnathan Bradley Peppergill");
    }
}
$bla = new test();
$smarty->display('index.tpl');
?>
ODER

PHP:
<?php
require '../libs/Smarty.class.php';
$smarty = new Smarty;
class test
{
    public function __construct($smarty){
        $smarty->assign("Name","Fred Irving Johnathan Bradley Peppergill");
    }
}
$bla = new test($smarty);
$smarty->display('index.tpl');
?>
Via Registry mußt du aber nicht ständig das Objekt übergeben du hast einen Zentralen Ablagepunkt.
 
Zurück