simplecomplex/explorable

使遍历受保护成员变得简单

1.0.0 2021-04-19 06:16 UTC

This package is auto-updated.

Last update: 2024-09-19 18:12:18 UTC


README

composer 命名空间: simplecomplex/explorable

使遍历受保护成员变得简单

一个接口、基类和特性,使得暴露类的受保护成员变得容易。

扩展 Explorable 便利了

  • isset()
  • count()
  • foreach (...
  • var_dump()
  • toObject(), toArray()
  • json_encode()

用法

声明属性的类

属性名硬编码在常量 EXPLORABLE_VISIBLE 中。

<?php

use SimpleComplex\Explorable\Explorable;
use SimpleComplex\Explorable\ExplorableTrait;

/**
 * @property-read string $foo
 * @property-read string $bar
 */
class ExplorablesDeclared extends Explorable
{
    use ExplorableTrait;

    public const EXPLORABLE_VISIBLE = [
        'foo' => true,
        'bar' => true,
    ];

    protected string $foo;

    protected string $bar;
}

依赖于属性表发现的类

属性将在需要时通过 explorablePrepare() 发现。

所有实例变量必须是可空的,并声明为 null (protected ?string $foo = null;).
否则,可能会出现 "::$foo 必须在初始化之前访问" 错误,或者实例变量根本不会被发现(因为没有设置值(null))。

<?php

use SimpleComplex\Explorable\Explorable;
use SimpleComplex\Explorable\ExplorableTrait;

/**
 * @property-read string $foo
 * @property-read string $bar
 */
class ExplorablesDiscoverable extends Explorable
{
    use ExplorableTrait;

    protected ?string $foo = null;

    protected ?string $bar = null;
}

MIT 许可

许可证和版权. 解释.

要求

  • PHP ^7.4 || ^8.0

开发(require-dev)

  • phpunit ^8 || ^9