最新消息:

使用PHP反射机制外部访问私有属性

PHP 433浏览 0评论

最近,群里有朋友面试遇到如何解决PHP外部访问类私有属性的问题。

对于这个问题,解决方案应该是有几种的。下面给个小demo说明下利用PHP反射机制来解决此问题:

<?php
/**
    使用PHP反射机制外部访问PHP私有属性
*/
class CateData
{
    private $_data = [];
    public function __construct($data)
    {
        $this->_data = $data;
    }
}

$data = [
    'a'=>'aaa',
  'b'=>'bbb',
  'c'=>'ccc'
];
$class = new ReflectionClass('CateData');

$property = $class->getProperty('_data');
$property->setAccessible(true);
$result = $property->getValue(new CateData($data));

echo 'value of the property `_data` is :'.PHP_EOL;
var_dump($result);

输出结果:

value of the property `_data` is :array(3) {
  ["a"]=>
  string(3) "aaa"
  ["b"]=>
  string(3) "bbb"
  ["c"]=>
  string(3) "ccc"
}

注意:setAccessible($arg) 函数是设置类属性可访问性,返回值为 void。

转载请注明:微刻 blog.wecot.cn » 使用PHP反射机制外部访问私有属性

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址