Ankündigung

Einklappen
Keine Ankündigung bisher.

Variable setzen außerhalb von der Klasse

Einklappen

Neue Werbung 2019

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

  • Variable setzen außerhalb von der Klasse

    Guten Morgen,

    ich möchte eine Variable mit Wert belegen außerhalb der Klasse, geht das überhaupt oder soll ich jetzt set und get Funktion schreiben?

    PHP-Code:
    class myClass
    {
      var 
    $logo;
    }

    function 
    myClass()
    {
      
    $this->logo '';
    }


    $my = new myClass();
    $my->logo 'logo.gif'
    Ich lerne PHP und es macht mir Spass!


  • #2
    ok anscheind geht dies nicht .. schade .. muss wohl funktion machen

    PHP-Code:
    function set($name,$wert)
            {
                
    $this->$name $wert;
            } 
    Ich lerne PHP und es macht mir Spass!

    Kommentar


    • #3
      Sicher geht das ...

      PHP-Code:
      class myClass 

        var 
      $logo


      $my = new myClass(); 
      $my->logo 'logo.gif'
      echo 
      $my->logo
      oder
      PHP-Code:
      class myClass 

        var 
      $logo

      function 
      myClass() {
        
      $this->logo 'uhu';
      }



      $my = new myClass(); 
      echo 
      $my->logo

      Kommentar


      • #4
        @CIXX88: Ich glaube phpbeginner meint so ein Konstrukt

        PHP-Code:
        <?php
        $logo 
        'test.gif';

        class 
        myClass
        {
          var 
        $logo;

          function 
        myClass(){
            global 
        $logo;
            
        $this->logo $logo;
          }
        }

        $my = new myClass();
        echo 
        $my->logo;   
        ?>
        Das ist nur extrem unsauber, wenn nicht sogar falsch. Sinnvollerweise greift man so wenig wie möglich direkt auf Attribute einer Klasse direkt zu, sondern erledigt das mit get() und set().
        Viele Grüße,
        Dr.E.

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        1. Think about software design before you start to write code!
        2. Discuss and review it together with experts!
        3. Choose good tools (-> Adventure PHP Framework (APF))!
        4. Write clean and reusable software only!
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        Kommentar


        • #5
          Zitat von dr.e.
          @CIXX88: Ich glaube phpbeginner meint so ein Konstrukt
          Wie kommst Du da drauf?

          Kommentar


          • #6
            Hallo Schnulli,

            Deshalb:
            [..]außerhalb der Klasse[..]
            Und ich wollte das als Negativ-Beispiel aufführen, weil ich schon oft dererlei Ideen gesehen habe, wenn Leute von Funktionen auf Klassen "umsteigen".
            Viele Grüße,
            Dr.E.

            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            1. Think about software design before you start to write code!
            2. Discuss and review it together with experts!
            3. Choose good tools (-> Adventure PHP Framework (APF))!
            4. Write clean and reusable software only!
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

            Kommentar


            • #7
              Re: Variable setzen außerhalb von der Klasse

              Aber wegen
              Zitat von phpbeginner
              PHP-Code:
              $my = new myClass();
              $my->logo 'logo.gif'
              und der selbst vorgeschlagenen Lösung als Set-Methode glaube ich doch eher, dass global nicht gemeint war.

              Kommentar


              • #8
                Ok, gebe mich geschlagen!
                Viele Grüße,
                Dr.E.

                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                1. Think about software design before you start to write code!
                2. Discuss and review it together with experts!
                3. Choose good tools (-> Adventure PHP Framework (APF))!
                4. Write clean and reusable software only!
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                Kommentar


                • #9
                  Zitat von dr.e.
                  PHP-Code:
                  <?php
                  $logo 
                  'test.gif';

                  class 
                  myClass
                  {
                    var 
                  $logo;

                    function 
                  myClass(){
                      global 
                  $logo;
                      
                  $this->logo $logo;
                    }
                  }

                  $my = new myClass();
                  echo 
                  $my->logo;   
                  ?>
                  Das ist nur extrem unsauber, wenn nicht sogar falsch. Sinnvollerweise greift man so wenig wie möglich direkt auf Attribute einer Klasse direkt zu, sondern erledigt das mit get() und set().
                  nur so am rande, ich verstehe eigentlich immer noch nicht was @phpbeginner wollte
                  aber wenn man mit php5 arbeitet, dann muss man in keinem fall in der classe globale variablen verwenden. Dafür gibt es classen Variablen (static) die zwar auch global sind aber beschränken sich nur für eine Namespace.
                  Beispiel:
                  PHP-Code:
                  //get und set habe ich mir aus faulheit gespart
                  class Foo{
                  public static 
                  $variable;
                  private 
                  $was;
                   public function 
                  __construct($was){
                    
                  $this->was=$was;
                   }
                   public function 
                  __toString(){
                    return 
                  "ich bin ".__CLASS__." Eigenschaften: \$was=".$this->was." \$variable=".Foo::$variable."
                  "

                   }
                  }
                  Foo::$variable="classen Globale variable";
                  echo new 
                  Foo("Ich");
                  //ausgabe: ich bin Foo Eigenschaften: $was=Ich $variable=classen Globale  variable

                  Foo::$variable="Immer noch";
                  echo new 
                  Foo("und jetzt");
                  //ausgabe: ich bin Foo Eigenschaften: $was=und jetzt $variable=Immer noch 
                  Slava
                  http://bituniverse.com

                  Kommentar


                  • #10
                    Naja, statische Variablen sind eher "pseudo-global". Die Variable selbst ist auf die Klasse beschränkt, die Klasse ist global, womit man dann über die Klasse auch auf die Variable zugreifen kann. Wollte das jetzt net so steh lassen
                    Nicht jeder Fehler ist ein Bug.

                    Kommentar


                    • #11
                      Wenn man sie public hält vielleicht ...muss man aber nicht.
                      PHP-Code:

                      class myClass {
                        protected static 
                      $logo;


                      Kommentar


                      • #12
                        Zitat von Schnulli
                        Wenn man sie public hält vielleicht ...muss man aber nicht.
                        PHP-Code:

                        class myClass {
                          protected static 
                        $logo;


                        ..., was ja eher ein Argument für mich ist, da es dem widerspricht, dass statische Klassenvariablen automatisch global sind Aber stimmt scho, bin unüberlegt nur von öffentlichen Variablen ausgegangen, die eben nicht vollständig ist ^^
                        Nicht jeder Fehler ist ein Bug.

                        Kommentar


                        • #13
                          Zitat von KingCrunch
                          ..., was ja eher ein Argument für mich ist, da es dem widerspricht, dass statische Klassenvariablen automatisch global sind
                          verstehe ich nicht.

                          Kommentar


                          • #14
                            Naja, ich habe vorher dem widersprochen, dass Klassenvariablen global sind, da sie nur im Klassenkontext existieren und nur über den globalen Klassenbezeichner auch ("pseudo"-)global angesprochen werden können. Du hast mich sogar noch ergänzt, dass sie sogar das nicht mal sein müssen
                            Nicht jeder Fehler ist ein Bug.

                            Kommentar

                            Lädt...
                            X