radebatz/property-info-extras

1.2.1 2020-10-16 03:08 UTC

This package is auto-updated.

Last update: 2024-08-26 17:16:27 UTC


README

Symfony属性信息组件的扩展。

Build Status Coverage Status License: MIT

需求

安装

您可以使用 Composer 或直接 下载发布版

Composer

首选方法是通过 composer。如果您尚未安装composer,请遵循安装说明

一旦安装了composer,请在您的项目根目录中执行以下命令以安装此库

composer require radebatz/property-info-extras

用法

Radebatz\PropertyInfoExtras\Extractor\DocBlockMagicExtractor

<?php
use Radebatz\PropertyInfoExtras\Extractor\DocBlockCache;
use Radebatz\PropertyInfoExtras\Extractor\DocBlockMagicExtractor;

/**
 * @method string getProString()
 * @method void setProString(?string $proString)
 */
class MagicPopo {
    protected $properties = [];

    public function __call($method, $args)
    {
        $name = lcfirst(substr($method, 3));

        if (0 == count($args)) {
            if (0 === strpos($method, 'get')) {
                return array_key_exists($name, $this->properties) ? $this->properties[$name] : null;
            }
        } elseif (1 == count($args)) {
            if (0 === strpos($method, 'set')) {
                $this->properties[$name] = $args[0];

                return;
            }
        }

        throw new \RuntimeException(sprintf('Invalid method on: %s: method: "%s"', get_class($this), $method));
    }
}

$phpDocMagicExtractor = new DocBlockMagicExtractor(new DocBlockCache());
$properties = $phpDocMagicExtractor->getProperties(MagicPopo::class);
// ['proString']

Radebatz\PropertyInfoExtras\PropertyInfoExtraExtractor

PropertyInfo组件中所述相同,但Radebatz\PropertyInfoExtras\PropertyInfoExtraExtractor提供了以下附加的xxAllxxx()方法

  • getAllProperties()

    报告的属性总数。提取器的顺序相关(最后一个是赢家)。

  • getAllTypes()

    报告的类型总数。仅在后续提取器向已提取的信息中添加内容时在属性级别合并(第一个是赢家)。

  • isAllReadable()

    如果至少有一个提取器返回true,则为true

  • isAllWritable()

    如果至少有一个提取器返回true,则为true