现在我听说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)
| 归档时间: |
|
| 查看次数: |
2812 次 |
| 最近记录: |