मैं PHP में स्थिर तरीकों के सही उपयोग पर थोड़ा अस्पष्ट हूं।PHP में "getInstance" और स्थिर तरीकों का सही उपयोग?
नीचे परिदृश्य में:
<?php
class Person
{
public $data;
public function __construct($id)
{
// Fetch record from our data source
switch($id){
case 1:
$this->data = array('id'=>1, 'name'=>'Mike');
break;
case 2:
$this->data = array('id'=>2, 'name'=>'Jennifer');
break;
default:
exit('Record not found!');
}
}
public function getName()
{
return $this->data['name'];
}
public static function getInstance($id)
{
return new self($id);
}
}
?>
मैं तो उत्पादन के नाम "माइक" और "जेनिफर":
उदाहरण A
<?php
foreach(array(1,2) as $id)
echo Person::getInstance($id)->getName();
?>
उदाहरण B
<?php
foreach(array(1,2) as $id){
$person = new Person($id);
echo $person->getName();
}
?>
या तो "माइकजेनिफर" प्रिंट करेगा, लेकिन मुझे बताया गया था उदाहरण ए गलत है, "क्योंकि व्यक्ति स्थिर वर्ग नहीं है"।
हालांकि कक्षा में एक वर्ग को "स्थैतिक" घोषित नहीं किया जा सकता है, तो यह क्यों मायने रखता है?
"लेकिन मुझे बताया गया कि उदाहरण ए गलत है" --- यह नहीं है। जिस व्यक्ति ने आपको यह बताया वह गलत है। – zerkms
व्यक्ति गलत क्यों है? पहला स्निपेट सिंगलटन पैटर्न की तरह दिखता है। ऐसा लगता है कि इस मामले में ... –
यह कक्षा अभी भी कई उदाहरणों की अनुमति देगी। तो यह सिंगलटन के खराब कार्यान्वयन की तरह दिखता है। कुछ प्रकार के हाइब्रिड क्लास – tlenss