PHP:对象分配给静态属性,这是非法的吗?

时间:2012-01-25 19:50:10

标签: php oop

将某些对象分配给静态属性是不合法的吗?

我在下面的代码中收到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中也没有代码问题。

2 个答案:

答案 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();
    }
}