demmonico/reflection

用于处理类反射的辅助函数和特性

安装: 28

依赖: 1

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 0

开放问题: 0

类型:helper

v2.0.2 2018-06-27 15:05 UTC

This package is not auto-updated.

Last update: 2024-09-15 05:02:54 UTC


README

描述

用于处理类反射的辅助函数和特性

Latest Stable Version Total Downloads License

组件

ReflectionHelper

用于处理类反射的辅助函数。是其他组件的基础

用法
  1. 获取类方法的列表
ReflectionHelper::getMethods($className, $filter=null, $prefix=null);
  1. 获取类常量的列表
ReflectionHelper::getConstants(string $className, ?string $prefix = ''): array
  1. 检测变量的类型(数组、整型、字符串等)
ReflectionHelper::detectVarType($var, $allowTypesArr=[], $default=null)

ConstantTrait

处理对类的常量标签的魔术调用,以获取类常量的数组或通过其值获取单个常量标签

用法

源类

class Simple
{
    use ConstantTrait;
    
    const GROUP_TEST_ONEWORD = 1;
    const GROUP_TEST_TWO_WORDS = 2;
    const GROUP_TEST_COM_plex_LAbeL = 3;
    
    public function test() { return $this->constGroupTest(); }
    public function testStatic() { return static::constGroupTest(); }
    public function testSingleLabel() { return $this->constGroupTest(static::GROUP_TEST_TWO_WORDS); }
    
    public function testInvalidPrefix() { return $this->invalidGroupTest(); }
    public function testInvalidConstGroup() { return $this->constInvalidGroup(); }
    public function testInvalidConstValue() { return $this->constGroupTest(1000); }
}

任何地方的使用

$simple = new Simple;
 
//
// will return CORRECT results
//
$simple->test();
// or
$simple->testStatic();
// or
Simple::testStatic();
// returns array(3) { [1]=> string(7) "Oneword" [2]=> string(10) "Two Words" [3]=> string(16) "COM plex LAbe L" }
 
$simple->testSingleLabel();
// returns string(10) "Two Words"
 
//
// will throw an ERRORS
//
$simple->testInvalidPrefix();
// or
$simple->testInvalidConstGroup();
// if no parent::__call and/or parent::__callStatic exists then
//      throws Error "Call to undefined method Simple::invalidGroupTest()" or "testInvalidConstGroup"
// else
//      throws error from parent
 
$simple->testInvalidConstValue();
// throws Error "Invalid argument '1000' while calling Simple::constGroupTest(1000)"

因此,正确的结果(不是单次调用)将是这样的

[
    1 => "Oneword",
    2 => "Two Words",
    3 => "COM plex LAbe L",
]

对于单标签调用 - Oneword

定制

更改常量获取器的前缀

在调用常量获取器之前定义

static::$constMagicGetterPrefix = 'get';
...
Simple::getGroupTest();

注意:尝试像下面那样重写静态属性将触发错误

protected static $constMagicGetterPrefix = 'get';

添加/重写常量标签以获取复杂的标签格式化

源类

class Simple
{
    ...
    protected static $constMagicLabels = ['GroupTest' => [3 => 'COMP-lex-LaBEL', 0 => 'Extra label']];
    ...
// or
    ...
    protected static constMagicLabels() { return ['GroupTest' => [3 => 'COMP-lex-LaBEL', 0 => 'Extra label']]; }
    ...
}

任何地方的使用

$simple->test();
// returns array(4) { [1]=> string(7) "Oneword" [2]=> string(10) "Two Words" [3]=> string(14) "COMP-lex-LaBEL" [0]=> string(11) "Extra label" }

因此,在这种情况下,正确的结果将是这样的

[
    1 => "Oneword",
    2 => "Two Words",
    3 => "COMP-lex-LaBEL",  // was replaced
    0 => "Extra label",     // was added
]

注意:您可以在调用获取器之前通过设置更改标签定制属性/方法的名称

static::$constMagicCustomLabels = 'renamedConstMagicLabels';