Segítségével objektum tulajdonság alapértelmezett az eljárás tulajdon

szavazat
21

Próbálom ezt (amely termel egy váratlan T_VARIABLE hiba):

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

Nem akarom, hogy egy mágikus szám ott súly, mivel a tárgy Én használ egy defaultWeightparaméter, amely minden új szállítmányok kap, ha nem adja meg a súlyát. Nem tudom tenni a defaultWeighta szállítást is, mert változik a szállítmány csoport szállítást csoport. Van egy jobb módja annak, hogy csinálni, mint a következő?

public function createShipment($startZip, $endZip, weight = 0){
    if($weight <= 0){
        $weight = $this->getDefaultWeight();
    }
}
A kérdést 04/08/2008 18:51
a forrás felhasználó
Más nyelveken...                            


4 válasz

szavazat
12

Ez nem sokkal jobb:

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();
}
Válaszolt 04/08/2008 18:53
a forrás felhasználó

szavazat
6

Jó kis trükk a logikai VAGY művelet:

public function createShipment($startZip, $endZip, $weight = 0){
    $weight or $weight = $this->getDefaultWeight();
    ...
}
Válaszolt 28/08/2008 09:10
a forrás felhasználó

szavazat
1

Használhatja a statikus tanulót, hogy tartsa az alapértelmezett:

class Shipment
{
    public static $DefaultWeight = '0';
    public function createShipment($startZip,$endZip,$weight=Shipment::DefaultWeight) {
        // your function
    }
}
Válaszolt 28/08/2008 02:56
a forrás felhasználó

szavazat
1

Ez lehetővé teszi, hogy adja át a súlya 0, és még mindig működik megfelelően. Figyeljük meg a === operátort, ez ellenőrzi, hogy súlya megegyezik „null” mindkét érték és típus (szemben a ==, ami csak érték, így 0 == null == false).

PHP:

public function createShipment($startZip, $endZip, $weight=null){
    if ($weight === null)
        $weight = $this->getDefaultWeight();
}
Válaszolt 05/08/2008 13:49
a forrás felhasználó

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