Sono un po 'incerto sull'uso corretto dei metodi statici in PHP.Uso corretto di "getInstance" e metodi statici in PHP?
Nello scenario di seguito:
<?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);
}
}
?>
Ho poi uscita i nomi "Mike" e "Jennifer":
Esempio A
<?php
foreach(array(1,2) as $id)
echo Person::getInstance($id)->getName();
?>
Esempio B
<?php
foreach(array(1,2) as $id){
$person = new Person($id);
echo $person->getName();
}
?>
O stamperà "MikeJennifer", ma mi è stato detto L'esempio A è errato, "perché Persona non è una classe statica".
Una classe non può essere dichiarata "statica" in PHP, quindi perché dovrebbe essere importante?
"ma mi è stato detto che l'Esempio A è sbagliato" --- non lo è. La persona che te l'ha raccontata ha torto. – zerkms
Perché la persona sbaglia? Il primo frammento sembra uno schema singolo. In questo caso non sembra essere necessario ... –
Questa classe consentirebbe comunque istanze multiple. Quindi sembra una brutta implementazione di un Singleton. Una sorta di classe ibrida – tlenss