我对在 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”,但有人告诉我示例 A是错误的,“因为 Person 不是静态类”。
但是,一个类不能在 PHP 中声明为“静态”,那么它为什么重要呢?