En utilisant la propriété d'objet par défaut de la propriété de la méthode

voix
21

Je suis en train de le faire (qui produit une erreur inattendue T_VARIABLE):

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

Je ne veux pas mettre un chiffre magique là - dedans pour le poids, puisque l'objet que je utilise a un defaultWeightparamètre que tous les nouveaux envois obtenir si vous ne spécifiez pas de poids. Je ne peux pas mettre le defaultWeightdans l'expédition elle - même, car il change de groupe à l' expédition groupe expédition. Y at - il une meilleure façon de le faire que ce qui suit?

public function createShipment($startZip, $endZip, weight = 0){
    if($weight <= 0){
        $weight = $this->getDefaultWeight();
    }
}
Créé 04/08/2008 à 18:51
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
12

Ce n'est pas beaucoup mieux:

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();
}
Créé 04/08/2008 à 18:53
source utilisateur

voix
6

astuce avec opérateur booléen OR:

public function createShipment($startZip, $endZip, $weight = 0){
    $weight or $weight = $this->getDefaultWeight();
    ...
}
Créé 28/08/2008 à 09:10
source utilisateur

voix
1

Vous pouvez utiliser un membre de classe statique pour maintenir la valeur par défaut:

class Shipment
{
    public static $DefaultWeight = '0';
    public function createShipment($startZip,$endZip,$weight=Shipment::DefaultWeight) {
        // your function
    }
}
Créé 28/08/2008 à 02:56
source utilisateur

voix
1

Cela vous permettra de passer un poids de 0 et fonctionne toujours correctement. Notez l'opérateur ===, ce vérifie si le poids correspond à « null » à la fois la valeur et le type (par opposition à ==, qui est juste valeur, donc 0 == null == false).

PHP:

public function createShipment($startZip, $endZip, $weight=null){
    if ($weight === null)
        $weight = $this->getDefaultWeight();
}
Créé 05/08/2008 à 13:49
source utilisateur

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