Ankündigung

Einklappen
Keine Ankündigung bisher.

array in class bringt fehler

Einklappen

Neue Werbung 2019

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

  • array in class bringt fehler

    Hallo

    Habe folgenden Code der mir einen Fehler ausgibt, seit dem ich "xxx" gegen ein Arrayelement ausgetauscht habe.
    PHP-Code:
    include ('config/config.inc.php');

    error_reporting(E_ALL);

    class 
    mysql
    {
        
        private 
    $host     $setting["host"]; 
        private 
    $user     $setting['user'];
        private 
    $passwort     $setting['passwort']; 
        private 
    $dbname     $setting['db'];
        private 
    $last_injection '';
        private 
    $conn_id null
    Code:
    Parse error:  syntax error, unexpected T_VARIABLE in xxx on line 20
    Zeile 20 ist private $host = $setting["host"];

    kann mit bitte jemand sagen was ich falsch gemacht habe?
    Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

  • #2
    Edit: bitte zum vergleich mal das vorherige script posten.
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      PHP-Code:
      class mysql 

          private 
      $host     '';  
          private 
      $user     ''
          private 
      $passwort     '';  
          private 
      $dbname     ''
          private 
      $last_injection ''
          private 
      $conn_id null
      wobei es keinen Unterschied macht, ob ich
      PHP-Code:
      private $host     'sada'
      oder
      PHP-Code:
      private $host     "sada; 
      eingeben
      Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

      Kommentar


      • #4
        PHP-Code:
        include ('config/config.inc.php');

        error_reporting(E_ALL);

        class 
        mysql
        {
            
            private 
        $host     $setting['host']; 
            private 
        $user     $setting['user'];
            private 
        $passwort     $setting['passwort']; 
            private 
        $dbname     $setting['db'];
            private 
        $last_injection '';
            private 
        $conn_id null
        Wenn es so nicht funktioniert teste mal, ob er per hand eingegebene strings annimmt.
        [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

        Kommentar


        • #5
          Ähm, Variablen kann so kein Wert übergeben werden (aus einen anderen Variable)
          Du kannst den Wert erst im Konstruktor übergeben!
          PHP-Code:
          class mysql
          {
          private 
          $host;
          private 
          $user;
          private 
          $passwort;
          ....

          public function 
          __constructor($host,$user,$passwort,...)
          {
          $this->passwort $passwort;
          usw

          Kommentar


          • #6
            Ähm, Variablen können so nicht deklariert werden.
            Du kannst den Wert erst im Konstruktor übergeben!
            Nö, geht auch so, würde es allerdings auch im Konstruktor machen...

            Mir stellt sich hier eher die Frage, woher das Array $settings kommt?!
            Competence-Center -> Enjoy the Informatrix
            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

            Kommentar


            • #7
              Zitat von Arne Drews Beitrag anzeigen
              Nö, geht auch so, würde es allerdings auch im Konstruktor machen...

              Mir stellt sich hier eher die Frage, woher das Array $settings kommt?!
              Wirklich? Hast du mal ein Codebeispiel, würde mich echt mal interessieren.

              Wobei ich mich falsch ausgedrückt habe^^
              PHP-Code:
              class foo
              {
              // das geht
              private $foo 'var';
              public 
              $a null;
              $public $b '';

              // aber sowas auch???
              $public $c $d
              Woher soll den $d kommen?

              Kommentar


              • #8
                Folgendes funktioniert:
                PHP-Code:
                class Test {

                  public 
                $var1 'Public';
                  protected 
                $var2 'Protected';
                  private 
                $var3 'Private';

                  public function 
                ShowVars() {
                    echo 
                '<br />'.$this->var1;
                    echo 
                '<br />'.$this->var2;
                    echo 
                '<br />'.$this->var3;
                  }
                }

                $T = new Test;
                $T->ShowVars(); 
                Eine Zuweisung, wie folgende geht nicht ($b)!
                PHP-Code:
                class Test {

                  public 
                $a 1;
                  public 
                $b $a// auch $this->a würde nicht funktionieren.

                ...

                Aber die Sache mit dem Array funktioniert definitiv nicht!
                Außer er übergibt es dem Konstruktor. Dann wäre aber Dein Hinweis über den Konstruktor zu definieren das Argument...
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  Zitat von ragtek Beitrag anzeigen
                  Wirklich? Hast du mal ein Codebeispiel, würde mich echt mal interessieren.

                  Wobei ich mich falsch ausgedrückt habe^^
                  PHP-Code:
                  class foo
                  {
                  // das geht
                  private $foo 'var';
                  public 
                  $a null;
                  $public $b '';

                  // aber sowas auch???
                  $public $c $d
                  Woher soll den $d kommen?
                  nein, natürlich nicht wenn die Variablen mit dem erstellen der Class übergeben werden. Wenn die Variablen allerdings Global sind sollte das funktionieren.
                  [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

                  Kommentar


                  • #10
                    $setting kommt aus der Config die oben ja mit include geholt wird.
                    In der Config selber wird KEINE klasse oder function verwendet.
                    PHP-Code:
                    $setting['host']                    = "localhost"
                    in Settings habe ich alle nötigen daten gespeichert, die ich immer wieder brauche.
                    Hier noch etwas mehr Code, damit ihr seht, wie ich es mache
                    PHP-Code:
                    <?php

                    /**
                     * @author 
                     * @copyright 2010
                     */
                    include ('config/config.inc.php');

                    error_reporting(E_ALL);

                    class 
                    mysql
                    {
                        
                        private 
                    $host     $setting["host"]; 
                        private 
                    $user     $setting['user'];
                        private 
                    $passwort     $setting['passwort']; 
                        private 
                    $dbname     $setting['db'];
                        private 
                    $last_injection '';
                        private 
                    $conn_id null;
                        
                        
                        public function 
                    __construct($host$user$passwort$dbname)
                        {
                            
                    $this->host     $host;
                            
                    $this->user     $user;
                            
                    $this->passwort $passwort;
                            
                    $this->dbname     $dbname;
                            
                    $this->connect_mysql();
                            return(
                    $this->conn_id);
                        }
                        
                        
                        
                        private function 
                    connect_mysql()
                        {
                            
                    $this->conn_id mysql_connect($this->host,$this->user,$this->passwort);
                            
                            if(
                    $this->conn_id === false)
                            {
                                
                    $message  "Verbindung zur Datenbank nicht m&ouml;glich.<br />\n";
                                
                    $message .= "Mysql-fehlermeldung: <br />\n";
                                
                    $message .= mysql_error();
                                
                                
                    trigger_error($message);
                                } 
                                else 
                                {
                                
                    $this->select_db();
                            }
                        }
                    Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

                    Kommentar


                    • #11
                      @tklausl & Arne Eben, sag ich doch^^
                      Das funkt:
                      PHP-Code:
                      class mysql
                      {
                          
                          private 
                      $host
                          private 
                      $user;
                          private 
                      $passwort;
                          private 
                      $dbname;
                          private 
                      $last_injection '';
                          private 
                      $conn_id null;
                          
                          
                          public function 
                      __construct($setting)
                          {
                              
                      $this->host     $setting['host'];
                              
                      $this->user     $setting['user'];
                             
                      //usw
                          

                      Kommentar


                      • #12
                        Zitat von SteiniKeule Beitrag anzeigen
                        $setting kommt aus der Config die oben ja mit include geholt wird.
                        In der Config selber wird KEINE klasse oder function verwendet.
                        PHP-Code:
                        $setting['host']                    = "localhost"
                        in Settings habe ich alle nötigen daten gespeichert, die ich immer wieder brauche.
                        Hier noch etwas mehr Code, damit ihr seht, wie ich es mache
                        PHP-Code:
                        <?php

                        /**
                         * @author 
                         * @copyright 2010
                         */
                        include ('config/config.inc.php');

                        error_reporting(E_ALL);

                        class 
                        mysql
                        {
                            
                            private 
                        $host     $setting["host"]; 
                            private 
                        $user     $setting['user'];
                            private 
                        $passwort     $setting['passwort']; 
                            private 
                        $dbname     $setting['db'];
                            private 
                        $last_injection '';
                            private 
                        $conn_id null;
                            
                            
                            public function 
                        __construct($host$user$passwort$dbname)
                            {
                                
                        $this->host     $host;
                                
                        $this->user     $user;
                                
                        $this->passwort $passwort;
                                
                        $this->dbname     $dbname;
                                
                        $this->connect_mysql();
                                return(
                        $this->conn_id);
                            }
                            
                            
                            
                            private function 
                        connect_mysql()
                            {
                                
                        $this->conn_id mysql_connect($this->host,$this->user,$this->passwort);
                                
                                if(
                        $this->conn_id === false)
                                {
                                    
                        $message  "Verbindung zur Datenbank nicht m&ouml;glich.<br />\n";
                                    
                        $message .= "Mysql-fehlermeldung: <br />\n";
                                    
                        $message .= mysql_error();
                                    
                                    
                        trigger_error($message);
                                    } 
                                    else 
                                    {
                                    
                        $this->select_db();
                                }
                            }
                        vorallem macht das script keinen sinn, da du die variablen die du vorher definierst im Construktor wieder überschreibst!
                        [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

                        Kommentar


                        • #13
                          Zitat von tkausl Beitrag anzeigen
                          vorallem macht das script keinen sinn, da du die variablen die du vorher definierst im Construktor wieder überschreibst!
                          versteh ich nicht
                          irgendwie muss ich doch dem besch...eidenem Script reinhämmern was ich in der Config festgelegt habe.
                          dann kann ich mir ja den Spass von wegen
                          PHP-Code:
                             private $host
                              private 
                          $user;
                              private 
                          $passwort;
                              private 
                          $dbname 
                          gleich sparen.
                          Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

                          Kommentar


                          • #14
                            Nein, weil die die Variablen dann in deinen Methoden brauchst.

                            Kommentar


                            • #15
                              Dein Problem ist das Verständnis für Gültigkeitsbereiche.
                              Eine Klasse bildet einen Raum für sich und kennt außerhalb definierte Variablen/Arrays nicht!

                              Definiere Konsanten in Deiner config
                              PHP-Code:
                              define('_DB_HOST','');
                              define('_DB_USER_NAME','hanswurst');
                              define('_DB_USER_KEY','xxx'); 
                              Dann kannst die auch verwenden, da Konstanten z.B. global gültig sind!
                              PHP-Code:
                              class mysql {

                                private 
                              $host _DB_HOST;
                                private 
                              $user _DB_USER_NAME;
                                private 
                              $password _DB_USER_KEY;

                              ...

                              Oder Du mußt das per Konstruktor machen, wie ragtek es gemeint hat.


                              @ragtek:
                              So is klar. Die wichtige Info in Klammern kam aber später...
                              Competence-Center -> Enjoy the Informatrix
                              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                              Kommentar

                              Lädt...
                              X