php中的朋友功能是什么?

Lal*_*S L 5 php c#

现在我听说c#中的朋友功能然后我只是谷歌知道它.我很想知道在php中也允许朋友功能.所以我的问题是什么是朋友的功能?我怎么能在PHP中使用它?这仅用于OOP吗?

小智 9

封装和抽象(数据隐藏)的概念表明非成员函数不应该能够访问对象的私有和受保护数据.该政策是,如果您不是会员,则无法进入.但可能会出现某些情况,您需要与非会员共享您的私人或受保护数据.在这里,'朋友'来救援.

友元函数是非成员函数,可以访问类的私有成员和受保护成员.

朋友功能指针:

朋友函数可以被声明为多个类的"朋友".它没有类的范围,因为它取决于函数的原始定义和声明.它不需要一个对象(该类声明它是朋友).它可以像普通函数一样调用.由于它不是成员函数,因此无法直接访问类的成员,并且必须使用对象名称和成员运算符(.)以及每个成员名称.它可以在类中的任何地方声明,而不会影响其含义.该类的成员函数对用于调用它的对象的成员进行操作,而友元函数对作为参数传递给它的对象进行操作.链接的PHP

PHP实现

class MyBaseClass  
{  
    protected static $friendClasses = array();  

    public function __get($name)  
    {  
        if (  
            // check if the caller's class is one of the friend classes  
            ($trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)) &&  
             (isset($trace[1]['class']) && in_array($trace[1]['class'], static::$friendClasses))  
        ) {  
            return $this->$name;  
        } else {  
            trigger_error('Member not available: ' . $name, E_USER_ERROR);  
        }  
    }  
} 
Run Code Online (Sandbox Code Playgroud)

链接参考