Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Frage zu Klassen und Funktionen

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

  • [Erledigt] Frage zu Klassen und Funktionen

    Hallo,
    ich steige nicht ganz dahinter wie ich Funktionen aufrufe die in anderen Klassen gekapselt sind:

    Beispiel: ich möchte aus funktion d funktion a aufrufen
    wie spreche ich diese funktion an?

    PHP-Code:
    class x{
    funktion a(){....}
    funktion b(){....}
    }

    class 
    z{
    funktion d(){....}
    funktion e){....}

    Besten Dank vorab für Hilfe!


  • #2
    Moin,

    ich weiss nicht, ob es der beste Weg ist, aber es funzt.

    PHP-Code:

    class x{
        function 
    a(){
            echo 
    "Hallo";
        }
        
        function 
    b(){}
    }

    class 
    z{
        function 
    d(){
            
    $x=new x();
             
    $x->a();
        }
        function 
    e(){}
    }  

    $bla=new z();
    $bla->d(); 
    VG,
    der ChillSn

    Kommentar


    • #3
      Das kommt ganz darauf an, ob deine Funktion statisch ist oder nicht. Wenn sie nicht statisch ist, dann brauchst du immer ein Objekt. Wenn du beispielsweise eine Klasse "Auto" hast, benötigst du immer ein Objekt "MeinTollerManta" um auf ihm die Methode "KurbeleScheibeRunter" auszuführen. Im Prinzip ist das Beispiel von ChillSn völlig korrekt aber es macht relativ wenig Sinn, sich ständig ein Objekt anzulegen.

      Stichwort für statische Funktionen (jene, die keine konkreten Objekte benötigen). "MyClass::fooFunction();"

      Falls noch Fragen sind, dann am besten mal ein konkretes Beispiel von dir, dass wir wissen was du vorhast.
      www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
      Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih

      Kommentar


      • #4
        PHP-Code:
        class x{
        funktion a(){....}
        funktion b(){....}
        }

        class 
        extends x{
        funktion d(){ $this-> a(); }
        funktion e(){....}

        Oder
        PHP-Code:
        class x{
        public static 
        funktion a(){....}
        funktion b(){....}
        }

        class 
        z{
        funktion d(){ x::a(); }
        funktion e(){....}

        "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

        Kommentar


        • #5
          PHP-Code:
          class x{
          public static 
          funktion a(){....}
          funktion b(){....}
          }

          class 
          z{
          funktion __construct($a){ $this->$a; }
          funktion d(){ $this->a->a(); }
          funktion e(){....}

          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            Ich will ja keine Krümel kacken, aber es muss function und nicht funktion heißen.

            Kommentar


            • #7
              Viva la copy and paste
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Um Objekte global zur Verfügung zu haben (also z.b. den Model- Controller), verwendet man z.B. eine Registry.
                Ansonsten kannst du Objekte auch direkt übergeben:

                PHP-Code:
                <?php
                class bla {

                function 
                test (User $user) {
                    
                $user->getID();
                //...
                ?>
                Stichwort type hinting

                Natürlich kannst du auch nur eine optionale Variable in der Funktionsdeklaration angeben und dann abprüfen, ob es sich um ein Objekt handelt.


                grüße
                I like cooking my family and my pets.
                Use commas. Don't be a psycho.
                Blog - CoverflowJS

                Kommentar


                • #9
                  Dankeschön!

                  Besten Dank an Euch,
                  besonders der Beitrag von Destructor war mit sehr hilfreich

                  Kommentar

                  Lädt...
                  X