Übergabe an Klasse

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

  • Übergabe an Klasse

    Hallo zusammen

    Wie übergebe ich eine Variable mit Wert (z.B. $dbhost = 'host') an eine Klasse?

    PHP-Code:
    <?php
    error_reporting
    (E_ALL);

    echo 
    '<pre>';
    /******************************************/
    /*  Gibt später eine Konfigurationsdatei  */
    /******************************************/
    $dbhost      'host';
    $dbuser      'user';
    $dbpassword  'password'
    $db          'datenbank';
    /*****************************************/

    class MySql{
        var 
    $dbhost;
        var 
    $dbuser;
        var 
    $dbpassword;
        var 
    $db;
        
        public function 
    makesqlconnect(){
                
    $host     $this->dbhost;
                
    $user     $this->dbuser;
                
    $password $this->dbpassword;
                
    $db       $this->db;
                
                echo 
    $host;
            }
        }
        
    $sqlconnect = new MySql($dbhost$dbuser$dbpassword$db);
    $sqlconnect->makesqlconnect();

    echo 
    '</pre>';
    ?>
    Wenn echo $host; in der Klasse steht wird nichts ausgegeben. Ausgabe sollte doch 'host' sein?

  • #2
    Informiere dich mal über Konstruktoren:
    http://ch2.php.net/manual/de/language.oop5.decon.php
    Onlie Browsergame: http://www.war-of-empire.de <-- 2. Weltkrieg

    Kommentar


    • #3
      Re: Übergabe an Klasse

      Original geschrieben von timebase
      Wenn echo $host; in der Klasse steht wird nichts ausgegeben. Ausgabe sollte doch 'host' sein?
      nein, die variablen werden nirgends zugewiesen. in deiner klasse fehlt der constructor:
      http://de.php.net/manual/en/language.oop5.decon.php

      außerdem mischst du php4 mit php5 syntax:
      http://de.php.net/manual/en/language...visibility.php
      also aus var $dbhost; wird private $dbhost;

      Kommentar


      • #4
        Genau das habe ich gesucht.

        PHP-Code:
        <?php
        error_reporting
        (E_ALL);

        echo 
        '<pre>';
        /******************************************/
        /*  Gibt später eine Konfigurationsdatei  */
        /******************************************/
        $dbhost     'host';
        $dbuser     'user';
        $dbpassword 'password'
        $db         'datenbank';
        /*****************************************/

        class MySql{

           private 
        $dbhost;
           private 
        $dbuser;
           private 
        $dbpassword;
           private 
        $db;

           public function 
        __construct ($dbhost$dbuser$dbpassword$db){
              
        $this->dbhost     $dbhost;
              
        $this->dbuser     $dbuser;
              
        $this->dbpassword $dbpassword;
              
        $this->db         $db;
           }

           public function 
        makesqlconnect(){
              echo 
        $this->dbhost;
              echo 
        $this->dbuser;
              echo 
        $this->dbpassword;
              echo 
        $this->db;
            }
        }

            
        $sqlconnect = new MySql ($dbhost$dbuser$dbpassword$db);
        $sqlconnect->makesqlconnect();

        echo 
        '</pre>';
        ?>
        Ausgabe 'hostuserpassworddatenbank'.

        Kommentar


        • #5
          wobei es eigentlich überflüssig ist, die db-zugangsdaten in der klasse zu speichern.
          sinnvoller wäre es, gleich im konstruktor die verbindung zu erstellen und diese ressource als klassenvariable zu speichern.

          Kommentar


          • #6
            Denn Code habe ich ein bisschen abgeändert.

            PHP-Code:
            <?php
            error_reporting
            (E_ALL);

            echo 
            '<pre>';
            /******************************************/
            /*  Gibt später eine Konfigurationsdatei  */
            /******************************************/
            $dbhost     'host';
            $dbuser     'user';
            $dbpassword 'password'
            $db         'datenbank';
            /*****************************************/

            class MySql{

               private static 
            $dbhost;
               private static 
            $dbuser;
               private static 
            $dbpassword;
               private static 
            $db;

               public function 
            __construct ($dbhost$dbuser$dbpassword$db){
                  
            $this->dbhost     $dbhost;
                  
            $this->dbuser     $dbuser;
                  
            $this->dbpassword $dbpassword;
                  
            $this->db         $db;
                  
               echo 
            $this->dbhost;
               echo 
            $this->dbuser;
               echo 
            $this->dbpassword;
               echo 
            $this->db;
               }
            }

            $sqlconnect = new MySql ($dbhost$dbuser$dbpassword$db);

            echo 
            '</pre>';
            ?>
            Ausgabe 'hostuserpassworddatenbank'.

            Ist doch schon viel übersichtlicher.

            Kommentar


            • #7
              Ja du bist auf dem richtigen Weg. Was 3DMax meinte ist die Daten einfach nur dem Konstruktor übergeben, die Verbindung (mysql_connect) herstellen und auf das Speichern der Daten verzichten.
              PHP-Code:
               public function __construct ($dbhost$dbuser$dbpassword$db){
                    
              mysql_connect ( .... );
                 } 
              Du kannst es dir übrigens einfacher machen wenn du mysqli extends und dann nur das implementierst was du noch zusätzlich brauchst.
              Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

              Kommentar

              Lädt...
              X