当声明PHP类变量时,我们不能执行任何表达式,例如:
class A
{
$a = 10 + 5;
}
只有我们才能提供常数,例如:
class A
{
$a = 100;
}
有人知道为什么会这样吗?
答案 0 :(得分:28)
这是因为表达式不允许作为字段默认值。使用构造函数来初始化变量。
我建议你这样做..
class A
{
public $a;
function __construct()
{
return $this->a = 10 + 5;
}
}
$a1 = new A;
echo $a1->a; //"prints" 15
答案 1 :(得分:16)
您不能使用语句或函数,只能使用标量值。这是因为类变量是在编译时启动的(在运行时之前)。应该使用类构造函数来启动带语句/函数的属性。
答案 2 :(得分:1)
您只能在课程的constructor
或other member functions
中的属性上执行表达式。
请注意,您可以在构造函数之外初始化value属性 和成员的职能。但是表达方式是不可能的。 最佳实践是初始化和执行表达式 类的构造函数和成员函数。
答案 3 :(得分:1)
在PHP OOP中声明类变量时,它们被称为类成员变量或类属性。我们无法分配值或执行任何表达式或计算的原因是您在此声明了类的结构,这与过程代码中的变量赋值不同。 OOP PHP类结构由php Parser和Compiled解析,在执行此操作时,编译器不执行任何过程代码。它只能处理常数值。
正如您现在所知,以下内容无法正常工作,并且会出现语法错误。
class A
{
$a = 100;
}
但是你可以通过在类中使用常量来实现相同的功能。
class A
{
const a = 100;
}
echo A::a;
如果您需要执行操作,可以使用方法甚至是类构造函数(如果需要)来执行此操作。
答案 4 :(得分:-1)
如果它与通过某个路径引用的“file.txt”初始化新数据库名称有关,那么我为解决这个问题所做的就是这样:
class A
{
private static $a = "";
private function __construct()
{
$a = //Code to get the value and initialize it.
}
}