petrp / access
Access - 用于访问对象私有和受保护成员的工具。非常适合单元测试。
v0.3.0
2023-02-13 12:45 UTC
Requires
- php: >=5.2.0
Requires (Dev)
- nette/nette: >=2.3
- petrp/httpphpunit: >=2.0
- phpunit/phpunit: >=3.5 <8
This package is auto-updated.
Last update: 2024-09-16 20:49:44 UTC
README
用于访问对象私有和受保护成员的工具。非常适合单元测试。
属性
class Foo { private $foo; } $a = Access(new Foo, '$foo'); $a->set(3); assert($a->get() === 3);
方法
class Foo { private function bar() { return 4; } } $a = Access(new Foo, 'bar'); assert($a->call() === 4);
整个类
class Foo { private $foo; private function bar($plus) { return $this->foo + $plus; } } $a = Access(new Foo); $a->foo = 10; assert($a->foo === 10); assert($a->bar(1) === 11);
链式操作对象和数组
class Foo { private $foo; public function __construct() { $this->foo = ['arrayKey' => new Bar]; } } class Bar { private $bar; } $a = AccessProxy(new Foo); $a->foo['arrayKey']->bar = 100; assert($a->foo['arrayKey']->bar === 100); assert($a->foo instanceof AccessProxy); assert(is_array($a->foo->getInstance())); assert($a->foo['arrayKey'] instanceof AccessProxy); assert($a->foo['arrayKey']->getInstance() instanceof Bar);
要求
库没有外部依赖。
已测试到 PHP <= 8.2。完全兼容 PHP >= 5.3.2。PHP >= 5.2.0 部分支持(见下文)。
AccessMethod 需要 PHP 5.3.2 或更高版本。AccessProperty 需要 PHP 5.3.0 或更高版本。
PHP >= 5.2.0 AND < 5.3.2 不支持
安装
GitHub
每个版本都有标签,可在 下载页面 上找到。
require_once __DIR__ . '/.../Access/src/Init.php';
Composer & Packagist
Access 可在 Packagist 上找到,您可以通过 Composer 获取它。
composer require petrp/access
require_once __DIR__ . '/vendor/autoload.php';