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