Page 1 of 1

Was fehlt im Code

Posted: Mon Dec 04, 2017 10:51 pm
by Tata
In der index.php Datei von sitr_plugin bekomme ich in XHdebug Report
NOTICE: Undefined variable: o
C:\xampp\htdocs\plugins\sitr\index.php:31
In der Datei steht vom Anfang

Code: Select all

    /** Prevent direct access. **/
if (!defined('CMSIMPLE_XH_VERSION')) {
    header('HTTP/1.0 403 Forbidden');
    exit;
}

function sitr(){
    global $plugin_cf, $plugin_tx, $pth, $tx;
    // declare variables
...
        $o .= '';       
    /* create message header & actual date/time */
     if($plugin_tx['sitr']['header'] == ""){
              $o .= "";}
...
Wo und wie soll die $o definiert sein?

Re: Was fehlt im Code

Posted: Tue Dec 05, 2017 9:24 am
by Holger
Tata wrote:Wo und wie soll die $o definiert sein?
Das kommt auf den Kontext an.

$o wird als globale Variable schon in cms.php definiert und dient dazu HTML dem Seiteninhalt voranzustellen. Wenn Du wirklich etwas in $o speichern möchtest, musst Du die Variable innerhalb einer Funktion verfügbar machen:

Code: Select all

global $o, ..... 
Ich vermute aber mal, dass Du $o in Deiner Funktion nur lokal verwenden möchtest, denn sitr() gibt am Ende mit return $o; den Inhalt der Variable zurück. Vielleicht solltest Du es besser vermeiden bereits woanders definierte Variablenbezeichner als eigene, nur in einer eigenen Plugin-Funktion gültige, Bezeichner zu verwenden. Dadurch bleibt der Code übersichtlicher und es gibt weniger Verwechslungen.

Im konkreten Fall kommt die Warnung, weil Du an die (noch nicht initialisierte) Variable $o mittels " .= " etwas anhängen möchtest, obwohl die Variable noch nicht existiert (undefiniert ist).
Die Lösung ist, die Variable ganz am Anfang der Funktion einfach "leer" zu initialisieren:

Code: Select all

function sitr(){
    global $plugin_cf, $plugin_tx, $pth, $tx;
    // declare variables
...
        $o = '';
also ohne den Punkt vor dem Gleichheitszeichen.

Re: Was fehlt im Code

Posted: Tue Dec 05, 2017 9:36 am
by Tata
Ach so! Danke.
Wieder etwas zugelernt.