这几天在看laravel框架的核心代码。发现大量的使用了反射机制。下面就来简单看看一些反射的应用
html' target='_blank'>class A private $_foo = this is a public function index() return $this- _foo; private function _come($param) return this is come .$param;$refClass = new ReflectionClass( A //获得反射
下面我们来通过这个反射来得到A的私有属性
$privateParams = $refClass- getDefaultProperties();print_r($privateParams);//得到结果 Array ( [_foo] = this is a )echo $privateParams[ _foo //得到 this is a
这样我们就可以很轻松的获得A的私有属性了。那么执行私有方法应该怎么操作呢。接下来我们先看执行共有方法,执行公有方法比较简单。
/****************获得类的实例*******************/$class = $refClass- newInstance();echo $class- index();
这样就可以调用公有的方法了。下面看执行私有方法
/****************获取A的方法*******************/$refHasClass = $refClass- getMethods();print_r($refHasClass); * Array ( [0] = ReflectionMethod Object ( [name] = index [class] = A ) * [1] = ReflectionMethod Object ( [name] = _come [class] = A ) )$come = $refClass- getMethod( _come $come- setAccessible(true);echo $come- invoke($class, this is param // this is athis is comethis is param
先通过getMethod()就可以获取到come方法,然后设置come方法的可访问性。最后通过invoke执行该方法
反射还有很多可用的方法,这里就不一一说了。有兴趣的可以看看官方文档以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP !
相关推荐:
php7+的php-fpm参数配置的注意事项
以上就是PHP通过反射来得到类以及一些基本的应用的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答