2012-03-13 39 views
6

Tôi có một lớp và nó có một số phương pháp tĩnh, một số không tĩnh. Nó có một thuộc tính tĩnh. Tôi đang cố truy cập thuộc tính đó bên trong tất cả các phương thức của nó, tôi không thể tìm ra cú pháp đúng.Truy cập tài sản tĩnh thông qua các phương pháp tĩnh và không tĩnh?

Những gì tôi có điều này là:

class myClass { 
    static public $mode = 'write'; 
    static public function getMode() { 
     return myClass::$mode; 
    } 
    public function getThisMode() { 
     return $this->mode; 
    } 
} 

bất cứ ai có thể cho tôi biết cú pháp thực tế cho việc này không?

Trả lời

16

Đối với tài sản tĩnh sử dụng sau, cho dù bên trong một hàm phi tĩnh

return self::$mode; 

Lý do cho điều này là bởi vì propery tĩnh tồn tại cho dù một đối tượng đã được khởi tạo hay không. Do đó, chúng tôi chỉ sử dụng cùng một thuộc tính đã tồn tại trước đó.

+1

Yep, mà làm việc. Cảm ơn. Tôi là một chút tò mò tại sao className :: $ chế độ không hoạt động, mặc dù? Tôi sẽ chấp nhận câu hỏi của bạn ngay khi nó cho tôi. – DanRedux

+0

@DanRedux Chúc mừng. Bạn có chắc chắn chức năng đầu tiên của bạn không trả lại bất cứ điều gì? – yehuda

+0

@DanRedux vừa kiểm tra mã của bạn và cả hai đều hoạt động tốt với sự thay đổi của bản thân. sử dụng myClass cũng tốt. – yehuda

3

Nếu bạn ở ngoài lớp học, hãy đảm bảo không quên số $ hoặc bạn cũng sẽ thấy lỗi này. Ví dụ, hãy chắc chắn để gọi nó là như thế này:

$myClass = new myClass(); 

echo $myClass::$mode; 

Không thích này:

echo $myClass::mode; 
+0

Ah! Nó chắc chắn hoạt động tốt hơn theo cách đó. –

Các vấn đề liên quan