পদ্ধতি সম্পত্তি জন্য ডিফল্ট হিসাবে বস্তুর সম্পত্তি ব্যবহার করে

আমি এটি করার চেষ্টা করছি (যা একটি অপ্রত্যাশিত 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();
    }
}
0
ro fr hi

4 উত্তর

এটা অনেক ভালো নয়:

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();
}
0
যোগ

এটি আপনাকে 0 এর একটি ওজন প্রদান করতে এবং সঠিকভাবে কাজ করতে দেয়। === অপারেটরকে লক্ষ্য করুন, এটি দেখায় যে ওজন "মূল্য" এবং টাইপ উভয় ক্ষেত্রে "নাল" (== এর বিপরীতে, যা শুধুমাত্র মান, তাই 0 == null == false)।

পিএইচপি:

public function createShipment($startZip, $endZip, $weight=null){
    if ($weight === null)
        $weight = $this->getDefaultWeight();
}
0
যোগ
[@ pix0r] (# 2213) তবে এটি একটি ভাল বিন্দু, যদি আপনি মূল কোডটি দেখেন তবে ওজন 0 হিসাবে পাস করলে ডিফল্ট ওভারটি ব্যবহার করে।
যোগ লেখক Kevin, উৎস

বুলিয়ান বা অপারেটরের সাথে সুনির্দিষ্ট কৌশল:

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

ডিফল্ট রাখার জন্য আপনি একটি স্ট্যাটিক ক্লাস সদস্য ব্যবহার করতে পারেন:

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