विधि गुण के लिए डिफ़ॉल्ट के रूप में वस्तु संपत्ति का उपयोग करना

वोट
21

मैं (जो एक अप्रत्याशित T_VARIABLE त्रुटि पैदा करता है) यह करने के लिए कोशिश कर रहा हूँ:

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

मैं, वजन के लिए वहाँ में एक जादुई संख्या डाल करने के लिए नहीं करना चाहता, क्योंकि वस्तु मैं उपयोग कर रहा हूँ एक है defaultWeightपैरामीटर है कि सभी नए लदान यदि आप एक वजन निर्दिष्ट नहीं करते हैं मिलता है। मैं नहीं डाल सकते defaultWeightलदान अपने आप में है, क्योंकि यह लदान समूह के लिए शिपमेंट समूह से बदल जाता है। वहाँ निम्नलिखित की तुलना में यह करने के लिए एक बेहतर तरीका है?

public function createShipment($startZip, $endZip, weight = 0){
    if($weight <= 0){
        $weight = $this->getDefaultWeight();
    }
}
04/08/2008 को 18:51
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


5 जवाब

वोट
12

यह बहुत बेहतर नहीं है:

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();
}
04/08/2008 को 18:53
का स्रोत उपयोगकर्ता

वोट
6

बूलियन OR ऑपरेटर के साथ साफ चाल:

public function createShipment($startZip, $endZip, $weight = 0){
    $weight or $weight = $this->getDefaultWeight();
    ...
}
28/08/2008 को 09:10
का स्रोत उपयोगकर्ता

वोट
1

आप डिफ़ॉल्ट धारण करने के लिए एक स्थिर वर्ग के सदस्य का उपयोग कर सकते हैं:

class Shipment
{
    public static $DefaultWeight = '0';
    public function createShipment($startZip,$endZip,$weight=Shipment::DefaultWeight) {
        // your function
    }
}
28/08/2008 को 02:56
का स्रोत उपयोगकर्ता

वोट
1

यह आपको 0 से वजन पारित करने के लिए और अभी भी ठीक से काम की अनुमति देगा। सूचना === ऑपरेटर, इस करता है, तो वजन से मेल खाता है "अशक्त" दोनों मूल्य और प्रकार में देखने के लिए जाँच करता है (जैसा कि == को, जो सिर्फ मूल्य है विरोध किया, तो 0 == बातिल == गलत)।

पीएचपी:

public function createShipment($startZip, $endZip, $weight=null){
    if ($weight === null)
        $weight = $this->getDefaultWeight();
}
05/08/2008 को 13:49
का स्रोत उपयोगकर्ता

वोट
0

केविन के जवाब में सुधार करने से अगर आप PHP का उपयोग कर रहे हैं 7 आप ऐसा कर सकते हैं:

public function createShipment($startZip, $endZip, $weight=null){
    $weight = $weight ?: $this->getDefaultWeight();
}
04/06/2019 को 12:34
का स्रोत उपयोगकर्ता

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