Ankündigung

Einklappen
Keine Ankündigung bisher.

Klasseneigene Properties call

Einklappen

Neue Werbung 2019

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

  • Klasseneigene Properties call

    Ist es sinnvoll, klasseneigene Member die Lokal in der Klasse verwendet werden überwiegend über die Setter und Getter zu callen?
    Ich selbst bin da etwas zwiegespalten.

    Vorzüge sehe ich darin, dass ich Klassenintern auch indirekt auf die Membervariablen zugreife. Validierungen usw. die ggf über Getter bzw Setter laufen, wären quasi mit inbegriffen.

    PHP-Code:

    <?php

    class Wheel{

        private 
    $size_inch;
        public function 
    __construct(){
            
    // defaults
            
    $this -> set_size'28' );
        }

        public function 
    set_size$inch ){
            
    $this -> set_size $inch;
            return 
    $this;
        }

        public function 
    get_size(){
            return 
    $this -> $size_inch;
        }

    }

    class 
    Bicycle{

        private 
    $wheels;

        public function 
    __construct(){
            
    // defaults
            
    $this -> set_wheels(
                new 
    Wheel,
                new 
    Wheel
            
    );
        }

        private function 
    set_wheels$front $back ){
            
    $this -> wheels = [
               
    $front $back
            
    ];
        }

    }

    $MountainBike = new Bicycle();
    print_r(
        
    $MountainBike
    );
    bitcoin.de <- Meine Freelancerwährung


  • #2
    PHP-Code:
       public function set_size$inch ){
            
    $this -> set_size $inch;
            return 
    $this;
        } 
    ????

    PHP-Code:
        public function __construct(){
            
    // defaults
            
    $this -> set_wheels(
                new 
    Wheel,
                new 
    Wheel
            
    );
        }

        private function 
    set_wheels$front $back ){
            
    $this -> wheels = [
               
    $front $back
            
    ];
        } 

    ????


    Kommentar


    • #3
      Mal abgesehen vom schon erwähnten, müsste es hier nicht besser
      PHP-Code:
      class Wheel extends Bycicle 
      lauten?
      https://www.php.net/manual/de/reflection.extending.php

      Kommentar


      • #4
        Zitat von protestix Beitrag anzeigen
        Mal abgesehen vom schon erwähnten, müsste es hier nicht besser
        PHP-Code:
        class Wheel extends Bycicle 
        lauten?
        https://www.php.net/manual/de/reflection.extending.php
        nein, muss es nicht. du kannst extends mit "is a" ersetzen. Wheel is a bycicle passt nicht

        Alpha ja es kann in Sinnvoll sein, wenn es nicht gerade einfache Werte sind. Also dein Beispiel ist zu einfach.

        Ich würde dann das daraus machen

        PHP-Code:
        class Wheel
        {

            private 
        $sizeInch 28;

            public function 
        setSize(int $inch)
            {
                
        $this->sizeInch $inch;
                return 
        $this;
            }

            
        /**
             * @return int
             */
            
        public function getSizeInch()
            {
                return 
        $this->sizeInch;
            }


        }

        class 
        Bicycle
        {
            
        /**
             * @var Wheel[]
             */
            
        private $wheels = [];

            public function 
        __construct()
            {
                
        // defaults
                
        $this->setWheels(
                    new 
        Wheel,
                    new 
        Wheel
                
        );
            }

            private function 
        setWheels(Wheel $front,Wheel $back)
            {
                
        $this->wheels = [
                    
        $front$back
                
        ];
            }



        also typen beachten, typehints einbauen und PSR einhalten
        apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/witalimik

        Kommentar


        • #5
          und vor allem nicht methoden in der methode mit properties überschreiben, wie bei
          wheel::set_size

          bei new obj, dachte ich braucht man klammern, ist aber wohl nicht so - hilft einem anfänger aber sicher.
          das mit den default wheels, ich finde das so auch nicht gut, die methode ist private, wird aber nirgends genutzt.
          default properties lassen sich ja wohl direct im constructor setzen,
          und public lässt sich
          setFrontWheel()
          setBackWheel()

          oder was auch immer machen.

          Kommentar

          Lädt...
          X