定制 danjones000/object-spy 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

danjones000/object-spy

Composer 安装命令:

composer require --dev danjones000/object-spy

包简介

Debugging library used to spy on objects' private values/methods

README 文档

README

Debugging library used to spy on objects' private values/methods

About

A debugging/testing tool which allows access to an object's or class's private and protected properties and methods without the use of Reflection.

This project adheres to a code of conduct. By participating in this project and its community, you are expected to uphold this code.

Installation

Install this package as a dependency using Composer.

composer require danjones000/object-spy

Usage

use Danjones000\Spy\ObjectProxy;

$object = new Object(); // Can be any object.

$spy = new ObjectProxy($object);

// Access private property
echo $spy->privateProperty;

// Set private property
$spy->privateProperty = 42;

// Call private method
$spy->privateMethod();

// Call private method with parameters
$spy->protectedMethod(42, false);

// Run arbitry code on object, allows passing in parameters
// All arguments after the closure are passed as arguments to the closure itself
$spy->call(fn ($abc) => $this->someProp = $this->someMethod($abc) * static::MULTIPLIER, 500);

// PHP allows static methods to be called non-statically, so, this works as well
$spy->staticPrivateMethod();

// Can also access static properties/methods without an object instance
$staticSpy = new ObjectProxy(Object::class);

// If there is an Object::$privateStaticProperty
echo $staticSpy->privateStaticProperty;
$staticSpy->privateStaticProperty = 42;

$staticSpy->privateStaticMethod();

// No direct access to contstants, but we can do this
$staticSpy->call(fn () => static::PRIVATE_CONSTANT); // self also works, of course

Implementation notes

This class does not use reflections in its operation. Instead, if uses closures that are bound to the instance or class.

Contributing

Contributions are welcome! To contribute, please familiarize yourself with CONTRIBUTING.md.

Copyright and License

The danjones000/object-spy library is copyright © Dan Jones and licensed for use under the terms of the MIT License (MIT). Please see LICENSE for more information.

统计信息

  • 总下载量: 13
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-10-15