PHP friend-जैसी घोषणाओं का समर्थन नहीं करता। इसे PHP5 में __get और __set मेथड्स का उपयोग करके और अनुमत मित्र वर्गों के लिए बैकट्रेस का निरीक्षण करके अनुकरण किया जा सकता है। लेकिन इस प्रकार की कोडिंग प्रैक्टिस को अनाड़ी माना जाता है:
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;
}
// __get() कोड यहां जाता है
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;
}
// सामान्य __set() कोड यहां जाता है
trigger_error('Cannot access private property ' . __CLASS__ . '::$' . $key, E_USER_ERROR);
}
}