Ich bin ein wenig unklar über die korrekte Verwendung von statischen Methoden in PHP.Korrekte Verwendung von "getInstance" und statischen Methoden in PHP?
Im folgende Szenario:
<?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);
}
}
?>
mich dann gibt die Namen "Mike" und "Jennifer":
Beispiel A
<?php
foreach(array(1,2) as $id)
echo Person::getInstance($id)->getName();
?>
Beispiel B
<?php
foreach(array(1,2) as $id){
$person = new Person($id);
echo $person->getName();
}
?>
Entweder wird "MikeJennifer" gedruckt, aber mir wurde gesagt Beispiel A ist falsch, "weil Person keine statische Klasse ist".
Eine Klasse kann in PHP nicht als "statisch" deklariert werden, also warum sollte es eine Rolle spielen?
"aber mir wurde gesagt, Beispiel A ist falsch" --- es ist nicht. Die Person, die es dir erzählt hat, ist falsch. – zerkms
Warum ist die Person falsch? Das erste Snippet sieht aus wie ein Singleton-Muster. Es scheint in diesem Fall nicht erforderlich zu sein ... –
Diese Klasse würde immer noch mehrere Instanzen zulassen. Es sieht also nach einer schlechten Implementierung eines Singleton aus. Eine Art Hybridklasse – tlenss