Antworten auf deine Fragen:
Neues Thema erstellen

[PHP] Undefined variable bei Nutzung einer Klasse

TECFreddy

"alles und nichts"-Könner

Hallöchen,

ich versuche mir gerade PHP beizubringen und dabei geht es mir in erster Linie nicht um eleganten und perfomanten Code, sondern um das grundlegene Verständnis und die Funktionalität desselben.

Ich möchte eine Art von "Template-Engine" schreiben. (nicht im herkömmlichen Sinne)

Ich habe also folgende -Dateien, >Ordnerstruktur und >>Unterordner:
Code:
>images
>includes
  -template.php
>>template
     -file_start.tpl
     -footer.php
     -left.php
     -navbar.php
     -right.php
     -header.php
     -wrapper.tpl
>styles
   -style.css
-index.php
Meine Template-Klasse sieht nun so aus (nur Auszüge):
PHP:
<?php
class Template{
    /**
    * html code of the file including the tags </head> and <body>
    * to begin the page
    *
    * @access  private
    * @var     string
    */
    private $file_start ='';

    /**
    * html code of the file including the tags </body> and </head>
    * to end the page
    *
    * @access  private
    * @var     string
    */
    private $file_end ='';

    /**
    * opentag of the wrapper of the website
    *
    * @access  private
    * @var     string
    */
    private $wrapper_start ='';

    /**
    * the wrapper_content of the website
    *
    * @access  private
    * @var     string
    */
    private $wrapper ='';

    /**
    * closetag of the wrapper of the website
    *
    * @access  private
    * @var     string
    */
    private $wrapper_end ='';

//AUSLASSUNG

/*----------- params above <=======> functions below -----------*/

    /**
    * Beschreibung der Funktion
    *
    * @access public
    */
    public function __construct(){
        $file_start = file_get_contents("includes/template/file_start.tpl");
        $file_end = '</body></html>';

        $wrapper_start = '<div class="container_16" id="wrapper">';
        $wrapper = file_get_contents("includes/template/wrapper.tpl");
        $wrapper_end = '</div>';
    }

/**
    * this function prints out the file_start
    *
    * @access public
    */
    public function start_file(){
        if (ISSET($file_start))
            echo $file_start;
    }

    /**
    * this function prints out the wrapper
    *
    * @access public
    */
    public function print_wrapper(){
        echo $wrapper_start;
        echo $wrapper;
        echo $wrapper_end;
    }
//AUSLASSUNG, DA NICHTMEHR RELEVANT FUER DAS PROBLEM
In meiner index.php sieht es so aus:
PHP:
<?php
    error_reporting(E_ALL);
    // Klasse bekannt machen
    require_once("includes/template.php");
    // neues Template anlegen (Objekt)
    $tpl = new Template();
    // Funktionen der Klasse nutzen
    $tpl->start_file();// FEHLER 1
?>
Fehler 1 ist folgender:
Notice: Undefined variable: file_start in F:\Eigene_Projekte\www\htdocs\Tutorials\includes\template.php on line 241
Warum sind die Variablen NICHT definiert? Sie werden ja vom Konstruktor initialisiert (mit var_dump getestet) gehen aber danach "verloren".

Ich weiß echt nicht weiter.
 
Zuletzt bearbeitet:

Robbyn-

PHP / Flex Programmierer

AW:
PHP:
 Undefined variable bei Nutzung einer Klasse[/b]

Du sprichst die Variabel falsch an

Falsch:
[php]
$fileStart = //inhalt;

Richtig
PHP:
$this->fileStart =//inhalt
 

TECFreddy

"alles und nichts"-Könner

AW:
PHP:
 Undefined variable bei Nutzung einer Klasse[/b]

Du meinst im Konstruktor?
Habe dort jetzt:
[PHP]
$this->$file_start = file_get_contents("includes/template/file_start.html");
und bekomme den Fehler immernoch.
 
Zuletzt bearbeitet:

Robbyn-

PHP / Flex Programmierer

AW:
PHP:
 Undefined variable bei Nutzung einer Klasse[/b]

Genau im Konstruktor und in dieser Funktion ebenfalls:

[php]
 public function start_file(){
        if (ISSET($file_start))
            echo $file_start;
    }

Dort findet ja die Überprüfung statt, dort willst du auch eine Variabel kontrollieren die in dieser Funktion existiert, da Sie nicht in dieser Funktion existiert sagt php da stimmt was nicht. In Klassen kannst du interne Variabeln immer nur mit $this-> davor ansprechen.


Edit:

Nein nicht

$this->$fileStart

sondern

$this->fileStart

dann kommt dein Fehler auch nicht mehr.
 

TECFreddy

"alles und nichts"-Könner

AW:
PHP:
 Undefined variable bei Nutzung einer Klasse[/b]

Wenn ich die Variable in der Function mit $this->$file_start aufrufe, bekomme ich diesen Fehler:
[QUOTE][B]Fatal error[/B]:  Cannot access empty property in [B]F:\Eigene_Projekte\www\htdocs\Tutorials\includes\template.php[/B] on line [B]241[/B][/QUOTE]

Der Inhalt der Variable geht verloren sobald der Konstruktor durch ist.
 

Duddle

Posting-Frequenz: 14µHz

AW:
PHP:
 Undefined variable bei Nutzung einer Klasse[/b]

Edit: Bissl spät abgeschickt, schon oben erwähnt.

Nein, überall. Wenn du nicht angibst, welches Attribut von welchem Objekt du meinst, nimmt er an die Variable ist lokal. Kurz: $this benutzen, wenn du Attribute oder Methoden vom aktuellen Objekt meinst.



Duddle
 

Robbyn-

PHP / Flex Programmierer

AW:
PHP:
 Undefined variable bei Nutzung einer Klasse[/b]

Schau doch mal bitte richtig was ich geschrieben habe. Du sprichst sie immer noch falsch an -_-
 

TECFreddy

"alles und nichts"-Könner

AW:
PHP:
 Undefined variable bei Nutzung einer Klasse[/b]

FUUU

Okay, das war dann jetzt der AHA-Effekt!
Ich danke für die Hilfe, dieser Fehler wird mir bestimmt nicht so schnell wieder unterlaufen.
Danke nochmal!
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben