yep/反射

PHP类反射增强

v2.1.0 2017-10-27 22:11 UTC

This package is auto-updated.

Last update: 2024-09-11 18:23:00 UTC


README

Build Status Scrutinizer Code Quality Scrutinizer Code Coverage Latest Stable Version Total Downloads License

PHP类反射增强(适用于PHP7+)

Packagist

Reflection 可在 Packagist.org 上找到,只需将依赖项添加到您的 composer.json 文件中。

{
  "require" : {
    "yep/reflection": "^2.0"
  }
}

或者运行 Composer 命令

php composer.phar require yep/reflection

耶普/反射是做什么的?

测试主题和示例代码

<?php
class SomeClass {
	private $someProperty;

	protected function someMethod($someArgument) {
		return $someArgument;
	}

	public function getSomeProperty() {
		return $this->someProperty;
	}

	public function setSomeProperty($someProperty) {
		$this->someProperty = $someProperty;
	}
}

class SomeClass2 extends SomeClass {
}

$someClass = new SomeClass();
$reflection = \Yep\Reflection\ReflectionClass::from($class = $someClass);

您可以简单地调用受保护的或私有方法

<?php
$someClass = new SomeClass();

echo $reflection->invokeMethod($method = 'someMethod', $arguments = ['foo']); // 'foo'

您可以简单地设置受保护的或私有属性的值

<?php
$someClass = new SomeClass();

$reflection->setPropertyValue($property = 'someProperty', $value = 'foo');

echo $someClass->getSomeProperty(); // 'foo'

您可以简单地从受保护的或私有属性中获取值

<?php
$someClass = new SomeClass();
$someClass->setSomeProperty('foo');

echo $reflection->getPropertyValue($property = 'someProperty'); // 'foo';

想要访问父类或父类的私有属性吗?

<?php
$someClass = new SomeClass2();
$someClass->setSomeProperty('foo');

echo $reflection->getParent()->getPropertyValue($property = 'someProperty'); // 'foo';