Php 类中的三元运算符语法错误
我想使用三元运算符为类变量指定两个不同的值 我有下面的代码示例,其中我得到了致命错误Php 类中的三元运算符语法错误,php,class,oop,ternary-operator,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() {
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();
我在没有上课的情况下试过,效果很好,但在课堂上我犯了错误
谁能指导我如何做到这一点
提前感谢在声明属性时,您只能指定常量值,不能执行逻辑操作,如三元逻辑 您可以在
\u构造
函数中执行逻辑:
class test {
public $data = NULL;
function __construct() {
$this -> data = true ? "working" : "not working";
echo $this -> data; // working
}
}
$test = new test();
从:
该声明可能包含一个初始化,但该初始化必须是一个常量值——也就是说,它必须能够在编译时进行计算,并且必须不依赖于运行时信息才能进行计算
它很管用,看看吧
class test {
public $data = NULL;
function __construct() {
echo $this -> data = true ? "working" : "not working"; //working
}
}
$test = new test();
在属性的声明中,不能在构造函数内部执行该操作。必须声明属性,并且可以选择使用常量值(即编译时已知的值)初始化属性。在google上用10秒,或者确实是在查看以前关于类定义中的ternaries的问题时,应该告诉您,没有构造函数的情况下,有多大的可能复制是可能的吗?@Kalpit不,没有。逻辑发生在运行时(脚本运行时)。在编译时(当脚本被读取和解析时),您只能设置常量值(字符串、数字、数组等)。@Kalpit这是不可能的,只能在构造函数内部设置。这是最重要的事件之一limitations@Kalpit:在某种程度上:当您第一次使用属性时,您可以使用三元动态设置值,或者您可以创建一个getter方法来检查属性是否已设置,如果未设置,则可以指定一个默认值。但老实说,最好使用构造函数。这种限制的原因是纯粹的逻辑:类定义包含类的初始状态及其工作逻辑,但它不能依赖逻辑来确定如何定义类,因此
private static$foo=time()%2?“奇数':'偶数'
只是没有加起来:代码是在编译时处理的,而不是运行时,因此time
函数还不必可用(我甚至认为我说得没错,@compile time)我认为重要的是要指出,这是有效的,因为您已经将三元运算符从成员变量定义中移到了构造函数中。解释原因,而不仅仅是如何解释,是非常有用的。。。