Frage

Ich bin versucht, dies zu tun (was produziert ein unerwarteter T_VARIABLE Fehler):

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

Ich nicht wollen, um eine Magische Zahl gibt es für Gewicht, da das Objekt ich verwende, hat eine "defaultWeight" parameter, die alle neuen Sendungen erhalten, wenn Sie nicht angeben ein Gewicht.Ich kann nicht den defaultWeight in der Sendung selbst, weil es ändert sich von Versand group-Versand-Gruppe.Gibt es einen besseren Weg, es zu tun als die folgenden?

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

Lösung

Das ist nicht viel besser:

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

Andere Tipps

Neat trick mit booleschen ODER-operator:

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

Dies wird Ihnen ermöglichen, pass ein Gewicht von 0 und immer noch ordnungsgemäß funktionieren.Hinweis der operator===, diese überprüft, um zu sehen, ob das Gewicht entspricht "null", sowohl in Wert und Typ (im Gegensatz zu ==, das ist nur Wert, also 0 == null == false).

PHP:

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

Sie können ein statisches Mitglied einer Klasse zu halten die Standard:

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

Die Verbesserung auf Kevins Antwort, wenn Sie mit PHP 7, die Sie machen können:

public function createShipment($startZip, $endZip, $weight=null){
    $weight = $weight ?: $this->getDefaultWeight();
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top