获取PHP中对象变量的保护类型

获取PHP中对象变量的保护类型,php,class,oop,Php,Class,Oop,我在建一个班。我打算让这个类成为以后许多API和数据库交互的主父类 假设它看起来像这样 class api_controller{ public $method = 'get'; private $table; protected $table_id_column; //Rest of code is really not needed } 我想知道是否有可能从PHP内部找出一个变量是公共的,私有的,或者受保护的(如果给定名称)?如果是的话,我计划将其用作检查站

我在建一个班。我打算让这个类成为以后许多API和数据库交互的主父类

假设它看起来像这样

class api_controller{
    public $method = 'get';
    private $table;
    protected $table_id_column;
    //Rest of code is really not needed
}
我想知道是否有可能从PHP内部找出一个变量是
公共的
私有的
,或者
受保护的
(如果给定名称)?如果是的话,我计划将其用作检查站,以确保没有子方法更改通过继承方法访问的数据。

我在谷歌上搜索了我的问题,提出了很多关于“获取对象变量”(vs
get\u class\u vars()”
的讨论,以及很多关于私有、受保护和公共之间区别的讨论。从我通过PHP数据库搜索对象/类函数的过程中,我没有看到任何立即跳出来作为答案的东西

我在想,它可能必须是一个try/catch语句,通过访问变量并查看它是否抛出错误(这会让我知道它是公共的还是私有的),但我不确定如何确定是否超过该点。即使这样,这个方法也必须是父类的成员,因此它可以访问它自己的所有私有变量

有什么想法吗?

使用

$class = new ReflectionClass('api_controller');
$property = $class->getProperty('method');
// then you could check by
// there are also methods of isProtected, isPublic, etc...
if ($property->isPrivate()) {
  // ..
}

不要开始编写试图自我保护的代码。只要将您的方法和属性适当地声明为
受保护的
私有的
,那么常规代码就不能访问这些属性了(这就是重点)。我不能详细讨论整个项目,这比其他任何事都更奇怪(sp?)。我已经计划好了编写代码的方法,但如果这是可行的,那么理论上我可以在这里和那里修改几行代码。