Method özelliği varsayılan olarak nesne özelliğini kullanarak

4 Cevap php

Ben (beklenmeyen bir T_VARIABLE hata üretir) bunu yapmak için çalışıyorum:

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

Ben kullanıyorum nesne bir ağırlık belirtmek yoksa tüm yeni gönderiler olsun "defaultWeight" parametresi vardır beri, ağırlık için orada sihirli bir sayı koymak istemiyorum. Bu sevkiyat grubuna sevkiyat grubu değiştirir çünkü, sevkiyat kendisi defaultWeight koyamazsınız. Aşağıdaki daha bunu yapmak için daha iyi bir yolu var mı?

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

4 Cevap

Bu kadar 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();
}

Boolean OR operatörü ile düzgün bir hile:

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

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

PHP:

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

statik bir sınıf üyesi kullanmayı deneyin.

class Shipment
{
    public static $DefaultWeight = '0';
    public function createShipment($startZip,$endZip,$weight=Shipment::DefaultWeight){
    //you function
    }
}