Created
February 13, 2020 03:30
-
-
Save mikeschinkel/78684d708358e1d101e319c7a2fdef9c to your computer and use it in GitHub Desktop.
A hypothetical ::meta for PHP symbols and variables that would provided a streamlined reflect
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Acme; | |
class Foo { | |
private const XYZ = 123; | |
public $bar = 'hello'; | |
function baz():int { return 0; } | |
} | |
echo Foo::meta->type->name; // object | |
echo Foo::meta->class->name; // \Acme\Foo | |
echo Foo::meta->class->shortName; // Foo | |
echo Foo::meta->namespace->name; // \Acme | |
echo Foo::XYZ::meta->name; // \Acme\Foo::XYZ | |
echo Foo::XYZ::meta->keyword->name; // const | |
$constant = Foo::meta->constants[0]; | |
echo $constant->name; // \Acme\Foo::XYZ | |
echo $constant->vibility->name; // private | |
echo $constant->value; // 123 | |
$property = Foo::meta->properties[0]; | |
echo $property->name; // Foo->bar | |
echo $property->vibility->name; // public | |
echo $property->value; // hello | |
$method = Foo::meta->methods[0]; | |
echo $method->name; // \Acme\Foo->baz | |
echo $method->type->name; // int | |
echo $method->keyword->name; // function | |
echo get_class( Foo::meta ); // meta | |
echo get_class( Foo::meta->class::meta ); // meta | |
echo get_class( Foo::meta->namespace::meta ); // meta | |
echo get_class( Foo::XYZ::meta->keyword ); // meta | |
echo get_class( $constant ); // meta | |
echo get_class( $property ); // meta | |
echo get_class( $method ); // meta |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment