Aquí podría ser tu PUBLICIDAD


Usar la propiedad del objeto como predeterminado para la propiedad del método

votos
21

Estoy intentando hacer esto (lo que produce un error T_VARIABLE inesperado):

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

No quiero poner un número mágico allí para el peso, ya que el objeto que estoy usando tiene un defaultWeightparámetro que todos los nuevos envíos obtienen si no especificas un peso. No puedo ingresar el defaultWeightenvío, ya que cambia de grupo de envío a grupo de envío. ¿Hay una mejor manera de hacerlo que la siguiente?

public function createShipment($startZip, $endZip, weight = 0){
    if($weight <= 0){
        $weight = $this->getDefaultWeight();
    }
}
Publicado el 04/08/2008 a las 18:51
fuente por usuario cmcculloh
En otros idiomas...        العربية       

4 respuestas

votos
12

Esto no es mucho mejor:

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();
}
Respondida el 04/08/2008 a las 06:53
fuente por usuario Kevin


Aquí podría ser tu PUBLICIDAD


votos
6

Buen truco con el operador booleano OR:

public function createShipment($startZip, $endZip, $weight = 0){
    $weight or $weight = $this->getDefaultWeight();
    ...
}
Respondida el 28/08/2008 a las 09:10
fuente por usuario Michał Rudnicki

votos
1

Puede usar un miembro de clase estática para mantener el valor predeterminado:

class Shipment
{
    public static $DefaultWeight = '0';
    public function createShipment($startZip,$endZip,$weight=Shipment::DefaultWeight) {
        // your function
    }
}
Respondida el 28/08/2008 a las 02:56
fuente por usuario paan

votos
1

Esto le permitirá pasar un peso de 0 y seguir trabajando correctamente. Observe el operador ===, esto comprueba si el peso coincide con "nulo" tanto en valor como en tipo (en lugar de ==, que es solo valor, entonces 0 == nulo == falso).

PHP:

public function createShipment($startZip, $endZip, $weight=null){
    if ($weight === null)
        $weight = $this->getDefaultWeight();
}
Respondida el 05/08/2008 a las 01:49
fuente por usuario pix0r