php动态反射其他文件夹的类,PHP通过反射来得到类,以及一些基本的应用

这几天在看laravel框架的核心代码。发现大量的使用了反射机制。下面就来简单看看一些反射的应用

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执行该方法

反射还有很多可用的方法,这里就不一一说了。有兴趣的可以看看官方文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值