Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Umgang ovn Klassen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Umgang ovn Klassen

    Hallo,

    Ich bin Blutiger Anfänger und plage mich mit einem für mich nicht verständlichen Fehler mit Umgang von klassen.
    Zur Erklärung: Ich habe eine Klasse mit einer für die Klasse ersichtliche Variable. Im Constuktor wird die Variable mit einem Objekt initialisiert. Wenn ich diese Variable allerdings in einer Methode benützen möchte, kommt immer nur ein Error:
    Fatal error: Call to a member function sendCommand() on a non-object in /var/www/blubb/includes/Updater.php on line 12
    PHP-Code:
    <?php
    class Updater{

            var 
    $database;
            
            function 
    Updater(){
                include_once(
    "DBManager.php");
                
    $database = new DBManager('***''***''***');
            }
            
            function 
    blubb(){
                
    $sql $this->database->sendCommand('***');
            }
    }


    include_once(
    "./Updater.php");
    $updater = new Updater();
    $updater->blubb();

    ?>

    Ich bin über jede Hilfe sehr dankbar!

    lg
    Typhoon


  • #2
    Zitat von Typhoon Beitrag anzeigen
    Ich bin Blutiger Anfänger
    Dann lerne bitte als allererstes mal, wie man saubere Fehlerbehandlung betreibt.

    In deinem Code (oder ist der gekürzt?) ist nicht mal ansatzweise zu erkennen, dass du dich überhaupt darum kümmerst, ob die Erstellung des Objektes überhaupt geklappt hat.

    Im Constuktor wird die Variable mit einem Objekt initialisiert.
    Überprüfe, ob das geklappt hat.

    var_dump bspw. ist ein recht simples Werkzeug für sowas.


    Und btw., arbeitest du noch mit PHP 4, oder warum wird die Variable $database mit dem Stichwort var deklariert?
    Wenn nicht, dann informiere dich über das Konzept der unterschiedlichen Sichtbarkeitsstufen bei OOP unter PHP 5.

    Kommentar


    • #3
      Die Variable $database ist nur in dem Construktor verfügbar. Möchtest du dass sie im gesamten Objekt verfügbar ist musst du sie mit $this->database = ... setzen!

      Kommentar


      • #4
        Zitat von ChrisB Beitrag anzeigen
        Und btw., arbeitest du noch mit PHP 4, oder warum wird die Variable $database mit dem Stichwort var deklariert?
        Wenn nicht, dann informiere dich über das Konzept der unterschiedlichen Sichtbarkeitsstufen bei OOP unter PHP 5.
        Und in PHP5 heißt der Konstruktor nurnoch __construct(), nicht mehr so , wie der Klassenname.

        EDIT: Hab Tomaten auf den Augen^^

        Mfg

        Kommentar


        • #5
          Dann lerne bitte als allererstes mal, wie man saubere Fehlerbehandlung betreibt.
          Ich bin bereit neues zu lernen. Kannst du mir eine gute Literatur empfehlen?

          In deinem Code (oder ist der gekürzt?) ist nicht mal ansatzweise zu erkennen, dass du dich überhaupt darum kümmerst, ob die Erstellung des Objektes überhaupt geklappt hat.
          Jap ist gekürzt , aber um ehrlich zu sein mach ich das so auch nicht.. :S Warum sollte ein Objekt nicht erstellt worden sein?!

          Und btw., arbeitest du noch mit PHP 4, oder warum wird die Variable $database mit dem Stichwort var deklariert?
          Wenn nicht, dann informiere dich über das Konzept der unterschiedlichen Sichtbarkeitsstufen bei OOP unter PHP 5.
          Du meinst private und public, wie man es auch von anderen Programmiersprachen kennt? Ja wie gesagt ... blutiger Anfänger

          Die Variable $database ist nur in dem Construktor verfügbar. Möchtest du dass sie im gesamten Objekt verfügbar ist musst du sie mit $this->database = ... setzen!
          Vielen, vielen, dank! Dass ich mir selber nicht darauf komm ... :S

          Und in PHP5 heißt der Konstruktor nurnoch __construct(), nicht mehr so , wie der Klassenname.
          Okay, alles klar. Gut zu wissen. Bins von anderen sprachen so gewohnt, aber es klappt genau so


          Danke an alle!

          lg
          Mani

          Kommentar


          • #6
            Zitat von Typhoon Beitrag anzeigen
            Jap ist gekürzt , aber um ehrlich zu sein mach ich das so auch nicht.. :S Warum sollte ein Objekt nicht erstellt worden sein?!
            Im Beispiel hast du das Erstellen einer Instanz einer Datenbank-Klasse.
            Das kann aus vielfältigen Gründen schief gehen, von falschen Zugangsdaten bis zu temporärer nicht-Erreichbarkeit des DB-Servers ...

            Kommentar


            • #7
              Okay alles klar, aber dann liefiert die 'isConnected' methode 'true' zurück. Das Objekt besteht trotzdem

              Kommentar

              Lädt...
              X