Tôi có một chút không rõ ràng về việc sử dụng đúng các phương thức tĩnh trong PHP.Sử dụng chính xác các phương thức "getInstance" và tĩnh trong PHP?
Trong kịch bản dưới đây:
<?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);
}
}
?>
tôi sau đó sản lượng tên "Mike" và "Jennifer":
Ví dụ A
<?php
foreach(array(1,2) as $id)
echo Person::getInstance($id)->getName();
?>
Ví dụ B
<?php
foreach(array(1,2) as $id){
$person = new Person($id);
echo $person->getName();
}
?>
Hoặc sẽ in "MikeJennifer", nhưng tôi đã được thông báo Ví dụ A sai, "vì Người không phải là một lớp tĩnh".
Một lớp không thể được khai báo "tĩnh" trong PHP, vậy tại sao nó lại quan trọng?
"nhưng tôi đã được thông báo Ví dụ A sai" --- không phải. Người nói với bạn là sai. – zerkms
Tại sao người đó lại sai? Đoạn đầu tiên trông giống như một mẫu đơn. Nó không có vẻ là cần thiết trong trường hợp này ... –
Lớp này sẽ vẫn cho phép nhiều phiên bản. Vì vậy, nó trông giống như một thực hiện xấu của một Singleton. Một số loại lai lớp – tlenss