Objecteigenschap gebruikt als standaard voor eigenschap method

stemmen
21

Ik probeer om dit te doen (die een onverwachte T_VARIABLE fout produceert):

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

Ik wil niet naar een magisch getal in daar te zetten voor het gewicht, omdat het doel ik gebruik heeft een defaultWeightparameter dat alle nieuwe zendingen als je niet beschikt over een gewicht opgeven. Ik kan niet de defaultWeightin de zending zelf, want het verandert vanaf verzending groep aan de verzending groep. Is er een betere manier om dit te doen dan het volgende?

public function createShipment($startZip, $endZip, weight = 0){
    if($weight <= 0){
        $weight = $this->getDefaultWeight();
    }
}
De vraag is gesteld op 04/08/2008 om 18:51
bron van user
In andere talen...                            


4 antwoorden

stemmen
12

Dit is niet veel beter:

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();
}
antwoordde op 04/08/2008 om 18:53
bron van user

stemmen
6

Handige truc met boolean OR operator:

public function createShipment($startZip, $endZip, $weight = 0){
    $weight or $weight = $this->getDefaultWeight();
    ...
}
antwoordde op 28/08/2008 om 09:10
bron van user

stemmen
1

U kunt een statische klasse lid te gebruiken om de standaard te houden:

class Shipment
{
    public static $DefaultWeight = '0';
    public function createShipment($startZip,$endZip,$weight=Shipment::DefaultWeight) {
        // your function
    }
}
antwoordde op 28/08/2008 om 02:56
bron van user

stemmen
1

Dit zal u toelaten om een ​​gewicht passeren van 0 en nog steeds goed te laten werken. Let op de === operator deze controleert of gewicht overeenkomt "null" in de waarde en de soort (in tegenstelling tot ==, die net waarde, zodat 0 == null == false).

PHP:

public function createShipment($startZip, $endZip, $weight=null){
    if ($weight === null)
        $weight = $this->getDefaultWeight();
}
antwoordde op 05/08/2008 om 13:49
bron van user

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