2017-08-01 112 views
0

我有一個錯誤,可能是因爲語法,我無法找到正確的方法。OOP PHP。語法未定義的屬性

這是我的代碼

function myFunction($id = 'ID') 
{ 
    if (!$this->$id) { 
     // TO DO SOMETHING 
    } 
} 

我有一個錯誤

公告:未定義的屬性:基本:: $ ID .....線278

我試過

if (!$this->{$id}) { 

但沒有任何東西

任何人都知道正確的語法是。我也無法在谷歌上找到它。

+2

敢肯定你只是說'如果(!$ ID)'... –

+1

@NiettheDarkAbsol不,我認爲他/她想要檢查,如果屬性不存在。當你想檢查屬性是否存在時,不要訪問它,你可以使用'isset'或更好地使用'property_exists'而不是直接訪問你懷疑它存在與否的屬性。如果該屬性不存在,該腳本將引發錯誤。看看下面的答案。 – Alfa

回答

0

如果要定義你的類的屬性,就應該像這樣訪問:

$this->id 

$this->$id 
0

只需使用

if(!$this->id) { 

if(!$id) { 
2

您可以使用property_exists而不是使用直接訪問if(!$this->$id)

function myFunction($id = 'ID') 
{ 
    if (!property_exists($this, $id)) { 
     // TO DO SOMETHING 
    } 
} 
+0

是的。函數property_exists()是解決方案。這是一種恥辱,我不能用我的方式去做。 謝謝阿爾法 – Zenit

-1

試試這個方法來獲取輸出。

$this->id 

$id 
0

我創建了一個例子代碼可能是如何工作的,我不停地用繩子訪問屬性的想法。第一步是讓這個類實際上有一個名爲「ID」的字段。我在構造函數中設置了這個字段值。

class My { 
    private $ID; 

    public function __construct($id) { 
     $this->ID = $id; 
    } 

    public function myFunction($id='ID'){ 

     if(!property_exists($this, $id)){ 
     echo "$id not found"; 
     } else { 
     echo $this->$id; 
     } 

    } 
} 

$my = new My(4); 
$my->myFunction();