PHP での静的メソッドの正しい使用法については、少しよくわかりません。
以下のシナリオでは:
<?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);
}
}
?>
次に、「Mike」と「Jennifer」という名前を出力します。
例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();
}
?>
どちらも「MikeJennifer」を出力しますが、「Person は静的クラスではないため」、例 Aは間違っていると言われました。
ただし、PHP ではクラスを「静的」と宣言することはできません。