yöntem özelliği için varsayılan olarak nesne özelliğini kullanarak

oy
21

Ben (beklenmeyen T_VARIABLE hatasını üreten) bu yapmaya çalışıyorum:

public function createShipment($startZip, $endZip, $weight = $this->getDefaultWeight()){}

Ben kullanıyorum nesne vardır beri, ağırlık için orada bir sihirli sayı koymak istemiyorum defaultWeightEğer bir kilo belirtmek yoksa tüm yeni gönderiler olsun parametreyi. Ben koyamazsınız defaultWeighto sevkiyat grubuna gönderi grubundan değiştiğinden, sevkiyat kendisinde. Aşağıda daha bunu yapmak için daha iyi bir yolu var mı?

public function createShipment($startZip, $endZip, weight = 0){
    if($weight <= 0){
        $weight = $this->getDefaultWeight();
    }
}
Oluştur 04/08/2008 saat 18:51
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
12

Bu çok daha iyi değil:

public function createShipment($startZip, $endZip, $weight=null){
    $weight = !$weight ? $this->getDefaultWeight() : $weight;
}

// or...

public function createShipment($startZip, $endZip, $weight=null){
    if ( !$weight )
        $weight = $this->getDefaultWeight();
}
Cevap 04/08/2008 saat 18:53
kaynak kullanıcı

oy
6

boole VEYA operatörü ile Güzel numara:

public function createShipment($startZip, $endZip, $weight = 0){
    $weight or $weight = $this->getDefaultWeight();
    ...
}
Cevap 28/08/2008 saat 09:10
kaynak kullanıcı

oy
1

Varsayılanı tutmak için statik bir sınıf üyesi kullanabilirsiniz:

class Shipment
{
    public static $DefaultWeight = '0';
    public function createShipment($startZip,$endZip,$weight=Shipment::DefaultWeight) {
        // your function
    }
}
Cevap 28/08/2008 saat 02:56
kaynak kullanıcı

oy
1

Bu 0'a bir ağırlığa geçmek ve hala düzgün çalışması için izin verecektir. === operatörü dikkat, bu (şimdiye 0 == null == false, sadece değer olan == aksine) ağırlık değeri ve tipi hem de "boş" ile eşleşir olmadığını denetler.

PHP:

public function createShipment($startZip, $endZip, $weight=null){
    if ($weight === null)
        $weight = $this->getDefaultWeight();
}
Cevap 05/08/2008 saat 13:49
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more