将某些对象分配给静态属性是不合法的吗?
我在下面的代码中收到HTTP 500错误。
require_once('class.linkedlist.php');
class SinglyLinkedlistTester {
public static $ll = new Linklist();
}
HTTP错误500(内部服务器错误):服务器尝试完成请求时遇到意外情况。
注意:非对象如string,int赋值给静态变量没有问题。 例如,
public static $ll = 5; //no issue
class.linkedlist.php中也没有代码问题。
答案 0 :(得分:10)
您无法在类属性声明中创建新对象。您必须使用构造函数来执行此操作:
class SinglyLinkedlistTester {
public static $ll;
public function __construct() {
static::$ll = new Linklist();
}
}
编辑另外,您可以使用PHP的lint标志(-l
)测试文件是否存在错误而不执行它们:
php -l your_file.php
这将告诉您文件中是否存在语法或解析错误(在这种情况下,这是一个解析错误)。
答案 1 :(得分:3)
你应该注意,你不要在对象的每个实例化上覆盖静态属性,因此:
class SinglyLinkedlistTester {
private static $ll;
public function __construct() {
if (!self::$ll) self::$ll = new Linklist();
}
}