Ví dụ:Tiếp cận lớp tài sản máng liên tục không hoạt động
class LOL{
const
FOO = 1;
}
$x = new LOL;
$arr = array('x' => $x);
echo $x::FOO; // works
echo $arr['x']::FOO; // works too
Nhưng nếu tôi làm ví dụ lớp học của tôi một tài sản, tôi không thể truy cập liên tục nữa:
class WWW{
protected $lol;
public function __construct($lol){
$this->lol= $lol;
}
public function doSMth(){
echo $this->lol::FOO; // fail. parse error.. wtf
}
}
$w = new WWW;
$w->doSMth();
:(
Tôi biết tôi chỉ có thể làm echo LOL::FOO
, nhưng nếu tên lớp không xác định? Từ vị trí đó tôi chỉ có quyền truy cập vào đối tượng/thuộc tính đó và tôi thực sự không muốn lớp WWW đó "nhận thức" về ot lớp học của cô và tên của họ. Nó chỉ nên làm việc với đối tượng đã cho
thử $ w = new WWW (LOL mới); ? – Gntem
Nhưng nếu tên lớp chưa được biết, làm thế nào bạn có thể biết nó có 'const FOO' để bắt đầu? (trừ khi tất cả các lớp của bạn đang thực hiện một số giao diện hoặc mở rộng một số lớp học) –
bởi vì nó hy vọng rằng hằng số có mặt: P – Alex