2012-01-25 19 views
7

Việc gán một số đối tượng vào thuộc tính tĩnh có bất hợp pháp không?PHP: Phân công đối tượng cho thuộc tính tĩnh, có bất hợp pháp không?

Tôi nhận được lỗi HTTP 500 ở mã bên dưới.

require_once('class.linkedlist.php'); 

class SinglyLinkedlistTester { 
    public static $ll = new Linklist(); 
} 

Lỗi HTTP 500 (Lỗi máy chủ nội bộ): Đã xảy ra điều kiện bất ngờ khi máy chủ đang cố thực hiện yêu cầu.

Lưu ý: Không có vấn đề với đối tượng không như chuỗi, gán int cho biến tĩnh. Ví dụ:

public static $ll = 5; //no issue 

Cũng không có vấn đề về mã trong class.linkedlist.php.

Trả lời

9

Bạn không thể tạo đối tượng mới trong khai báo thuộc tính lớp. Bạn phải sử dụng các nhà xây dựng để làm điều này:

class SinglyLinkedlistTester { 
    public static $ll; 

    public function __construct() { 
     static::$ll = new Linklist(); 
    } 
} 

Edit: Ngoài ra, bạn có thể kiểm tra tập tin của bạn cho các lỗi mà không thực hiện chúng bằng cờ lint PHP (-l):

php -l your_file.php 

chí này cho bạn biết liệu có lỗi cú pháp hoặc phân tích cú pháp trong tệp của bạn (trong trường hợp này, đó là lỗi phân tích cú pháp).

+0

tĩnh :: $ ll hoặc tự :: $ ll? –

+0

Tham khảo: http://php.net/manual/en/language.oop5.static.php – Josh

+0

@Josh: Trên thực tế, [this] (http://www.php.net/manual/en/language.oop5. late-static-bindings.php) có lẽ hữu ích hơn. – FtDRbwLXw6

1

bạn nên chăm sóc, mà bạn không ghi đè thuộc tính tĩnh trên mỗi instantiation của một đối tượng, do đó làm:

class SinglyLinkedlistTester { 
    private static $ll; 

    public function __construct() { 
     if (!self::$ll) self::$ll = new Linklist(); 
    } 
} 
Các vấn đề liên quan