我搜索了很多答案,但只找到了一个问题,即是否可以在另一个班级写一个类和类似的东西.
所以有第一个文件,它是:
文档1:
class MyClass1 {
private $myAttribute1;
__construct(){
this->myAttribute1 = 'blabla';
}
}
Run Code Online (Sandbox Code Playgroud)
现在打电话给同一份文件
$myObject1 = new MyClass1();
Run Code Online (Sandbox Code Playgroud)
在NetBeans中完全正常工作.
同时当我构建另一个文档时,我们称之为Document2,并在那里构建另一个类MyClass1,Netbeans告诉我有一个问题:
书2:
myClass2 {
$myAttribute2 = new myClass1();
}
Run Code Online (Sandbox Code Playgroud)
所以这在我的NetBeans中不起作用,只是告诉我'意想不到的新'.我如何使用MyClass1,myClass2因为这种方式不起作用?
PHP只允许某些表达式用作类属性的初始化值:
class foo {
$x = 7; //fine, constant value
$y = 7+7; // only fine in recent PHPs
$z = new bar(); // illegal in all PHP versions
}
Run Code Online (Sandbox Code Playgroud)
该7+7版本仅在最近的PHP版本中受支持,并且允许的唯一表达式是那些在编译时可以完全计算其结果值的表达式.由于new无法在编译时执行,仅在执行时,它是一个彻头彻尾的永久非法表达.
这意味着对于只能在运行时计算的"复杂"表达式,您必须在构造函数中执行该表达式:
class foo {
public $z;
function __construct(){
$z = new bar();
}
}
Run Code Online (Sandbox Code Playgroud)