sınıfı içinde referans değişken geçmek?

2 Cevap php

Ben herhangi bir onaltılık kod renk renk değerlerini değiştirmek bir onaltılık renk sınıfı üzerinde çalışıyorum. Benim örnekte, ben altıgen matematik bitmiş değil, ama burada açıklayan ettiğimi tamamen alakalı değil.

Safça, ben yapılabilir sanmıyorum şey yapmak başlamak istedim. Ben bir yöntem çağrısı nesne özelliklerini geçmek istedi. Is this possible?

class rgb {

        private $r;
        private $b;
        private $g;

        public function __construct( $hexRgb ) {
                $this->r = substr($hexRgb, 0, 2 );
                $this->g = substr($hexRgb, 2, 2 );
                $this->b = substr($hexRgb, 4, 2 );
        }

        private function add( & $color, $amount ) {
            $color += amount; // $color should be a class property, $this->r, etc. 
        }

        public function addRed( $amount ) {
                self::add( $this->r, $amount );
        }

        public function addGreen( $amount ) {
                self::add( $this->g, $amount );
        }

        public function addBlue( $amount ) {
                self::add( $this->b, $amount );
        }
}

Bu PHP mümkün değilse, ne bu adı ve hangi diller bu mümkün mü?

Ben böyle bir şey yapabileceğini biliyorum

public function add( $var, $amount ) {
    if ( $var == "r" ) {
         $this->r += $amount
    } else if ( $var == "g" ) {
        $this->g += $amount
    } ...
}

Ama ben bunu bu serin şekilde yapmak istiyorum.

2 Cevap

Bu, tamamen yasal PHP kodu bu pass by reference denir ve birçok dilde mevcuttur. PHP, hatta böyle bir şey yapabilirsiniz:

class Color {
    # other functions ...
    private function add($member, $value) {
        $this->$member += $value;
    }
    public function addGreen($amount) {
        $this->add('g', $amount);
    }
}

Ben daha hexdec() ondalık için yapıcısındaki değerlerini dönüştürmek için kullanabilirsiniz.

Sadece bunu:

public function add( $var, $amount ) { 
  if(property_exists(__CLASS__,$var)) $this->$var += $amount; 
}