"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > आप एकाधिक कंस्ट्रक्टरों के बिना PHP कक्षाओं में एकाधिक आरंभीकरण परिदृश्यों को कैसे संभाल सकते हैं?

आप एकाधिक कंस्ट्रक्टरों के बिना PHP कक्षाओं में एकाधिक आरंभीकरण परिदृश्यों को कैसे संभाल सकते हैं?

2024-11-24 को प्रकाशित
ब्राउज़ करें:776

How Can You Handle Multiple Initialization Scenarios in PHP Classes Without Multiple Constructors?

PHP में एकाधिक कंस्ट्रक्टर

PHP एक क्लास में अलग-अलग तर्क हस्ताक्षर वाले एकाधिक कंस्ट्रक्टर की अनुमति नहीं देता है। यह एक चुनौती है जब विभिन्न परिदृश्यों के लिए अलग-अलग आरंभीकरण प्रक्रियाओं की आवश्यकता होती है।

एक दृष्टिकोण दो कंस्ट्रक्टर विधियों को परिभाषित करना है:

class Student {
    public function __construct($id) {
        $this->id = $id;
    }

    public function __construct(array $row_from_database) {
        $this->id = $row_from_database['id'];
        $this->name = $row_from_database['name'];
    }
}

हालाँकि, यह दृष्टिकोण PHP के कंस्ट्रक्टर सिंटैक्स नियमों का उल्लंघन करता है।

इस सीमा को दरकिनार करने के लिए, इसके बजाय स्थिर फ़ैक्टरी विधियाँ बनाना एक सामान्य समाधान है:

class Student {
    public function __construct() {
        // Allocate resources here
    }

    public static function withID($id) {
        $student = new self();
        $student->id = $id;
        return $student;
    }

    public static function withRow(array $row) {
        $student = new self();
        $student->id = $row['id'];
        $student->name = $row['name'];
        return $student;
    }
}

इस तकनीक के साथ, इनिशियलाइज़ेशन कंस्ट्रक्टर के बजाय स्थिर तरीकों के माध्यम से किया जाता है:

$studentWithID = Student::withID(42);
$studentWithRow = Student::withRow(['id' => 42, 'name' => 'John']);

स्थैतिक फ़ैक्टरी विधियाँ कई आरंभीकरण परिदृश्यों का पालन करते हुए उन्हें संबोधित करने के लिए एक लचीला और रखरखाव योग्य तरीका प्रदान करती हैं PHP के क्लास डिज़ाइन सिद्धांत।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3