2011-06-18 40 views
19

Trong khi tôi hiểu biến số $this không có sẵn khi một phương thức được gọi trong ngữ cảnh tĩnh, để hỗ trợ tách các thành phần ứng dụng của tôi khỏi một đối tượng khác, tôi thấy có thể gọi các phương thức tĩnh từ một cá thể. Ví dụ:Gọi phương thức tĩnh từ ví dụ trong PHP, không được dùng nữa trong tương lai?

class MyExample{ 
    private static $_data = array(); 
    public static function setData($key, $value){ 
     self::$_data[$key] = $value; 
    } 
    // other non-static methods, using self::$_data 
} 

// to decouple, another class or something has been passed an instance of MyExample 
// rather than calling MyExample::setData() explicitly 
// however, this data is now accessible by other instances 
$example->setData('some', 'data'); 

Có kế hoạch từ chối loại chức năng này hay tôi có quyền mong đợi hỗ trợ cho việc này không? Tôi làm việc với error_reporting(-1) để đảm bảo một môi trường phát triển rất nghiêm ngặt và chưa có bất kỳ vấn đề nào (PHP 5.3.6) tuy nhiên tôi biết sự ngược lại không được hỗ trợ; đó là, các phương thức cá thể được gọi là tĩnh.

+0

'$ example :: method()' sẽ tìm kiếm một lớp có tên '$ example' đánh giá, vì vậy tôi không tin rằng nó sẽ hoạt động (* chặn thủ thuật với' __toString() '*) .. . ** hay không? ** Tôi đã không mong đợi rằng để làm việc, tuy nhiên nó dường như có. Tôi tò mò mặc dù, cú pháp (và về mặt kỹ thuật) nếu đó là hướng tốt nhất. – Dan

+0

tôi cũng hy vọng nó sẽ không được chấp nhận bất cứ lúc nào sớm ... nó sẽ phá vỡ rất nhiều mã, ha! – prodigitalson

Trả lời

27

Từ Php documentation:

Một tài sản khai báo là tĩnh không thể truy cập với một instantiated đối tượng lớp (dù một phương pháp tĩnh có thể).

Vì vậy, tôi nghĩ rằng nó sẽ được hỗ trợ về phía trước trong một thời gian dài.

+2

Tính đến năm 2016, ["Đối với hồ sơ, hiện tại không có kế hoạch, không cụ thể và cũng không có tính đầu cơ, để phản đối chức năng này."] (Https://www.reddit.com/r/PHP/comments/3yph4q/is_it_bad_practice_to_call_a_static_method_via_an/ cyg3fct /) – bishop

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