Ich bins mal wieder.
Hab schon ein bisschen das Board und php.net durchforstet, und vielleicht hab ich die Lösung bereits gelesen und habe sie nur nicht verstanden... daher schreib ich doch mal lieber einen Thread ^^
Ich habe für mein Projekt diverse Libraries erstellt, die alle Klassen entahlten, mit denen ich später arbeiten will.
Jetzt bin ich soweit, dass ich endlich die Templates mit einbinden will. Dazu habe ich eine eigene Templateklasse erstellt (mit SMARTY-Erweiterung)
Und da ich ein fauler Programmierer bin :P lade ich die Libraries mit einer statischen Methode Libraries::load(string $libraries).
Damit ich die geladenen Klassen nicht in jedem Skript manuell instanzieren muss, dachte ich mir, es wäre ganz praktisch, das gleich beim Laden zu erledigen.
Daher habe ich die Funktion updateInstances(string $library) erstellt.
Diese sieht so aus:
Will ich nun jedoch in der index.php z.B. $tpl->load(string $template) ausführe, erhalte ich die Fehlermeldung, dass $tpl kein Objekt sei.
Das versteh ich allerdings nicht so ganz, denn es wird ja eindeutig erstellt. Habe sogar mit diversen Prüfungen den kompletten Verlauf aller require_once() etc. auflisten können:
Daher verstehe ich nicht ganz, wieso er mir diese Fehlermeldung bringt
Hab schon ein bisschen das Board und php.net durchforstet, und vielleicht hab ich die Lösung bereits gelesen und habe sie nur nicht verstanden... daher schreib ich doch mal lieber einen Thread ^^
Ich habe für mein Projekt diverse Libraries erstellt, die alle Klassen entahlten, mit denen ich später arbeiten will.
Jetzt bin ich soweit, dass ich endlich die Templates mit einbinden will. Dazu habe ich eine eigene Templateklasse erstellt (mit SMARTY-Erweiterung)
Und da ich ein fauler Programmierer bin :P lade ich die Libraries mit einer statischen Methode Libraries::load(string $libraries).
Damit ich die geladenen Klassen nicht in jedem Skript manuell instanzieren muss, dachte ich mir, es wäre ganz praktisch, das gleich beim Laden zu erledigen.
Daher habe ich die Funktion updateInstances(string $library) erstellt.
Diese sieht so aus:
PHP-Code:
/**
* Autoinstancing of libraries
*
* Creating instances of standard-libraries and supress errormessages if
* they are not yet loaded. [Libraries] and [ErrorHandler] do not need to be instanced, all functions
* are internal or static. [MySQL] must not be instanced, as it is a required class for DataBase and therefore
* already instanced.
* Only libraries included in [classObjects.txt] are loaded.
*
* @return void
*/
function updateInstances($library)
{
switch ($library) {
case 'Templates':
$tpl = new Templates;
break;
case 'Pages':
$page = new Pages;
break;
}
}
Das versteh ich allerdings nicht so ganz, denn es wird ja eindeutig erstellt. Habe sogar mit diversen Prüfungen den kompletten Verlauf aller require_once() etc. auflisten können:
Code:
Level 2 required library: lib.Libraries.php Level 3 required library: lib.ErrorHandler.php Level 2 required library: lib.Config.php Level 3 optional library: lib.Pages.php [$library] = Pages Class [Pages] instanced Level 3 optional library: lib.Templates.php [$library] = Templates Class [Templates] instanced Fatal error: Call to a member function loadStyle() on a non-object in /draco/page.home.php on line 16
Kommentar