gpt4 book ai didi

PHP 等价于 friend 或内部

转载 作者:IT王子 更新时间:2023-10-29 01:10:34 27 4
gpt4 key购买 nike

在 PHP 中是否有一些等同于“ friend ”或“内部”的东西?如果没有,是否有任何模式可遵循以实现此行为?

编辑:抱歉,标准 Php 不是我要找的。我正在寻找与 ringmaster 所做的类似的东西。

我有一些类在后端执行 C 风格的系统调用,而处理工作开始变得很麻烦。我在对象 A 中有一些函数,这些函数将对象 B 作为参数,并且必须调用对象 B 中的一个方法,将自身作为参数传递。最终用户可以调用 B 中的方法,系统就会崩溃。

最佳答案

PHP 不支持任何类似友元的声明。可以使用 PHP5 __get 和 __set 方法来模拟这一点,并仅检查允许的友元类的回溯,尽管这样做的代码有点笨拙。

有一些 sample code以及关于 PHP 网站上的主题的讨论:

class HasFriends
{
private $__friends = array('MyFriend', 'OtherFriend');

public function __get($key)
{
$trace = debug_backtrace();
if(isset($trace[1]['class']) && in_array($trace[1]['class'], $this->__friends)) {
return $this->$key;
}

// normal __get() code here

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;
}

// normal __set() code here

trigger_error('Cannot access private property ' . __CLASS__ . '::$' . $key, E_USER_ERROR);
}
}

(由 tsteiner 在 nerdclub dot net 证明的代码 on bugs.php.net )

关于PHP 等价于 friend 或内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/317835/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com