Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

PHP tương đương friend hoặc internal


PHP không hỗ trợ khai báo kiểu friend. Có thể mô phỏng trong PHP5 dùng phương thức __get và __set và kiểm tra backtrace cho class friend cho phép. Nhưng cách viết này được coi là cồng kềnh:

class sample_friend { 
    private $__friends = array('My_Friend', 'Other_Friend'); 
    public function __get($key) 
    { 
        $trace = debug_backtrace(); 
        if(isset($trace[1]['class']) && in_array($trace[1]['class'], $this->__friends)) { 
            return $this->$key; 
        } 
        // mã __get() ở đây 
        trigger_error('Cannot access private property ' . __CLASS__ . '::$' . $key, E_USER_ERROR); 
    } 
    public function __set($key, $value) { 
        $trace = debug_backtrace(); 
        if(isset($trace[1]['class']) && in_array($trace[1]['class'], $this->__friends)) { 
            return $this->$key = $value; 
        } 
        // mã __set() bình thường ở đây 
        trigger_error('Cannot access private property ' . __CLASS__ . '::$' . $key, E_USER_ERROR); 
    } 
}