Fehlende Existenz einer globalisierten Variable

Gumbo

Erfahrenes Mitglied
Ich versuche gerade das Weblog-Tool Wordpress an meine Bedürfnisse anzupassen. Dazu ist es notwendig, dies in ein weiteres Skript mittels include() einzubeziehen. Doch dies wird mit der Fehlermeldung:
Fatal error: Call to a member function on a non-object in /var/www/anonymous/html/www/wordpress/wp-includes/functions.php on line 325
zurückgewiesen. Dazu hier die entsprechenden Zeilen 323–325:
PHP:
function get_alloptions() {
	global $wpdb, $tableoptions;
	$options = $wpdb->get_results("SELECT option_name, option_value FROM ".$tableoptions);
Um es vorweg zu nehmen: Ich weiß schon, dass es an dem $wpdb liegt, da diese zwar außerhalb der Funktion existiert, nicht aber innerhalb.
Rufe ich das einzubeziehende Skript selbst auf, funktioniert alles wie erwartet.

Habt ihr eine Idee, woran das liegen kann, bzw. wie ich das Problem lösen könnte?
 
Also der Fehler muss an einer anderen Stelle liegen.

Folgendes läuft wunderbar unter PHP 4 und PHP 5:

PHP:
<?php
error_reporting(E_ALL);

class foo {

    var $tmp;

    function foo() {
        $this->tmp = "bar";
    }

    function getVar() {
        return $this->tmp;
    }
}

$obj = new foo();

printout();

function printout() {
    global $obj;
    echo $obj->getVar();
}
?>

Als alternative könntest Du mal versuchen, das Objekt $wpdb nicht zu globalisieren sondern als Referenz der Funktion zu übergeben:

PHP:
function get_alloptions(&$wpdb,&$tableoptions) { 
    $options = $wpdb->get_results("SELECT option_name, option_value FROM ".$tableoptions); 
}
 
Danke für deinen alternativen Vorschlag, jedoch halte ich den für zu kompliziert umzusetzen.


Um es noch einmal zu veranschaulichen. So sieht etwa meine Ordnerstruktur aus. Die Ordner sind mit Serifenschrift, und die Dateien mit einer Schrift mit fester Breite dargestellt:
  • www
    • wordpress
      • wp-include
        • functions.php
      • weblog.php
      • weblog-header.php
    • index.php
    • page-content.php

Als allererstes wird innerhalb der index.php die page-content.php einbezogen, in der die zuladenen Inhalte gesteuert werden. Diese bezieht wiederum die weblog.php ein, in welcher die Daten von Wordpress gesammelt werden. Doch zuvor muss diese wiederum Einstellungen aus der weblog-header.php laden, die auf Funktionen in der functions.php zurückgreift.

Wenn ich nun die index.php aufrufe, wird der oben beschriebene Fehler angezeigt. Rufe ich jedoch die weblog.php direkt auf, funktioniert es wie erwartet.
 
Zuletzt bearbeitet:
Zurück