PHP code example of demmonico / reflection

1. Go to this page and download the library: Download demmonico/reflection library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

demmonico / reflection example snippets


ReflectionHelper::getMethods($className, $filter=null, $prefix=null);

ReflectionHelper::getConstants(string $className, ?string $prefix = ''): array

ReflectionHelper::detectVarType($var, $allowTypesArr=[], $default=null)

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",
]

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';