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