类中的三元运算符语法错误

时间:2014-11-12 12:18:26

标签: php class oop ternary-operator

我想使用三元运算符为类变量分配两个不同的值。

我有以下代码示例我正在致命的错误。

    class test {
         public $data = (true) ? "working" : "not working"; //Parse error: syntax error, unexpected '(' in C:\xampp\htdocs\Faltu\test.php on line 15

         function __construct() {
            echo $this->data;
         }  
    }
    $test = new test(); 

我在没有上课的情况下尝试过并且工作正常,但在课堂上我遇到了错误。

任何人都可以指导我如何实现这一目标吗?

提前致谢

2 个答案:

答案 0 :(得分:3)

您只能在声明属性时指定常量值,而不能像三元一样执行逻辑运算。

您可以在__construct功能中执行逻辑:

class test {
     public $data = NULL;

     function __construct() {
        $this -> data = true ? "working" : "not working";
        echo $this -> data; // working
     }  
}
$test = new test();

来自documentation

  

此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。

答案 1 :(得分:0)

它有效看看

class test {
     public $data = NULL;

     function __construct() {
       echo  $this -> data = true ? "working" : "not working"; //working

     }  
}
$test = new test();