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:
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;
}
}
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:
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
Daher verstehe ich nicht ganz, wieso er mir diese Fehlermeldung bringt