In folgenden Tutorial möchte ich zeigen, wie man mit Hilfe von Class-Nesting in DCA-Klassen untereinander Methoden und Variablen nutzen kann.

Man stelle sich vor wir haben zwei DCA-Dateien - eine für die ptable und eine für die ctable.

DCA 1 (ptable): tl_myextensions.php mit der Klasse

PHP-Code:
class tl_myex extends backend
{
    public var 
$tl_myex_var;

    public function 
__construct() 
    {
        
parent::__construct();
        
$this->tl_myex_var "hello world set by contruct";
    }

    public function 
tl_myex_function() 
    {
        return 
"hello world send by tl_myex_function";
    }

    [...]

DCA 2 (ctable): tl_myextensions_items.php mit der Klasse

PHP-Code:
class tl_myex_items extends backend
{
    private var 
$class_tl_myex;
        
    public function 
__construct() 
    {
        
parent::__construct();

        
// create instanz of class tl_myex
        
$this->class_tl_myex = new tl_myex;

        
// use var of class tl_myex
        
echo $this->class_tl_mg->tl_myex_var;

        
// use function of class tl_myex
        
echo $this->class_tl_mg->tl_myex_function;
    }

    [...]


Wer jetzt in der Klasse "tl_myex_items" auf die Variable "tl_myex_var" oder die Funktion "tl_myex_function" zugreifen möchte steht vor einem Problem.

Jede eigene Backendklasse muss zunächst die Klasse "backend" erben um bestimmte DCA-Funktionalitäten darzustellen. Da es keine Mehrfachvererbung in PHP gibt wird das Ganze mit Class-Nesting durchgeführt.

Dafür wird lediglich in der Klasse "tl_myex_items" eine Instanz von "tl_myex" erzeugt. Ab sofort kann man damit auch auf Variablen und Methoden der Klasse "tl_myex" zugreifen ...

Ich hoffe ich konnte euch damit helfen!

Grüße, Andy