• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Call to a member function assign() on a non-object - wie lösen?

LaLola

Neues Mitglied
Hi zusammen,

seit Jahren mache ich noch mal etwas mit PHP, weil ein Bekannter eine Webseite mit "CMS" benötigt. Leider sind meine Kenntnisse inzwischen ein wenig eingerostet.

Ich baue auf Templates auf, mit einer eigenen kleinen Template-Engine (nichts bedeutendes). Dabei bekomme ich folgende Fehlermeldungen:

Notice: Undefined variable: template in C:\xampplite\htdocs\...\includes\functions.inc.php on line 116

Fatal error: Call to a member function assign() on a non-object in C:\xampplite\htdocs\...\includes\functions.inc.php on line 116

Den betreffenden Code habe ich deutlich verkürzt und verallgemeinert, damit es verständlicher ist.

Hier meine Dateien:

index.php
PHP:
<?php
    include_once('./includes/functions.php');

    $template = new template('test.tpl');
    $template->assign('key1', 'value1');

    doSomething();

    $template->display();
?>

includes/functions.php
PHP:
<?php
    class template
    {
        ...
    }

    function doSomething()
    {
        $template->assign('key2', 'value2');
    }
?>

Aus der Funktion doSomething() heraus habe ich keinen Zugriff auf das Objekt $template, das sagt mir die Fehlermeldung. Die Frage ist: gibt es hier eine Lösung? Kann ich von einer "includierten" Funktion aus auf ein Objekt der Hauptdatei zugreifen?


Grüße, LaLola
 
Willkommen im Forum.

Übergib das Objekt als Parameter an die Funktion.

index.php

PHP:
// $template = ...
doSomething($template);

functions.php

PHP:
function doSomething($parameter)
{
    $parameter->assign('key2', 'value2');
}
 
Zurück
Oben