2017-08-01 116 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();