php如何验证类的属性是私有的?不要用反射。。

新手上路,请多包涵

php如何验证类的属性是私有的?不要用反射。。

阅读 2.4k
3 个回答
<?php



class PTest {

    private $v;

    public function __construct(){
        $this->v=123;
    }
}


$p = new PTest();

try {
    echo $p->v;
}catch (Error $e){
    if(strstr($e->getMessage(),'access private property')){
        echo "访问了私有属性\n";
    }
}

<?php
class someClass
{
    public function publicFunc() 
    {
    }
    private function privateFunc() 
    {
    }
}
var_dump(is_callable([new someClass,'publicFunc']));//bool(true)
var_dump(is_callable([new someClass,'privateFunc']));//bool(false)

如果只是获取pulbic属性的话,可以在类外用get_class_vars

<?php

class PTest {

    private $v = 1;
    public $c = 2;
    protected $b = 3;
}

var_dump(get_class_vars(PTest::class));

推荐问题