反射api获取源代码

使用反射 api获取类或者类中方法的源代码

class ReflectionUtil
{
	public static function getClassSource(ReflectionClass $reflection)
	{
		$file = $reflection->getFileName();
		$lines = file($file);
		$start-line = $reflection->getStartLine();
		$end-line = $reflection->getEndLine();
		return implode(array_slice($lines, $start-line - 1, $end-line - $start-line + 1));
	}

	public static function getMethodSource(ReflectionMethod $reflection)
	{
		$file = $reflection->getFileName();
		$lines = file($file);
		$start-line = $reflection->getStartLine();
		$end-line = $reflection->getEndLine();
		return implode(array_slice($lines, $start-line - 1, $end-line - $start-line + 1));
	}
}

  两个方法惊人的相似。。。。

 

另外

class Test
{
	public function testFunction()
	{
		return 0;
	}
}

$reflectionClass = new ReflectionClass('Test');
$reflectionMethod = $reflectionClass->getMethod('testFunction');
$reflectionMethods = $reflectionClass->getMethods();

  其中,$reflectionMethod即为ReflectionMethod类的对象。而$reflectionMethods则为对象的集合。

$reflectionParameters = $reflectionMethod->getParameters();

  其中$reflectionParameters则为ReflectionParameter对象数组。

posted @ 2017-08-08 10:34  牛奶无花果  阅读(311)  评论(0编辑  收藏  举报