Was fehlt im Code

Third Party Plugins to CMSimple - how to install, use and create plugins

Moderator: Tata

Post Reply
Tata
Posts: 3586
Joined: Tue May 20, 2008 5:34 am
Location: Slovakia
Contact:

Was fehlt im Code

Post by Tata » Mon Dec 04, 2017 10:51 pm

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?
CMSimple.sk
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.

Holger
Site Admin
Posts: 3470
Joined: Mon May 19, 2008 7:10 pm
Location: Hessen, Germany

Re: Was fehlt im Code

Post by Holger » Tue Dec 05, 2017 9:24 am

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.

Tata
Posts: 3586
Joined: Tue May 20, 2008 5:34 am
Location: Slovakia
Contact:

Re: Was fehlt im Code

Post by Tata » Tue Dec 05, 2017 9:36 am

Ach so! Danke.
Wieder etwas zugelernt.
CMSimple.sk
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.

Post Reply