static function isFunc($__request) { return static::is ( self::T_FUNC, 0b00, self::T_PAIR|self::T_P2_VAR|self::T_P2_ALIAS, $__request ); } static function isVar($__request) { return static::is ( self::T_P2_VAR, 0b00, self::T_PAIR|self::T_FUNC|self::T_P2_ALIAS, $__request ); } $t = [ 'foo->bar', 'foo::bar', 'foo->$bar', 'foo::$bar', 'foo->$$bar', 'foo::$$bar', 'bar', 'foo->bar()', 'foo::bar()', 'foo->$bar()', 'foo::$bar()', 'foo->$$bar()', 'foo::$$bar()', 'bar()', '$foo->bar', '$foo::bar', '$foo->$bar', '$foo::$bar', '$foo->$$bar', '$foo::$$bar', '$bar', '$foo->bar()', '$foo::bar()', '$foo->$bar()', '$foo::$bar()', '$foo->$$bar()', '$foo::$$bar()', '$bar()', '$$foo->bar', '$$foo::bar', '$$foo->$bar', '$$foo::$bar', '$$foo->$$bar', '$$foo::$$bar', '$$bar', '$$foo->bar()', '$$foo::bar()', '$$foo->$bar()', '$$foo::$bar()', '$$foo->$$bar()', '$$foo::$$bar()', '$$bar()', ]; foreach($t as $v) { print $v.PHP_EOL; foreach(['isFunc', 'isVar', 'isVarFunc', 'isVarAlias', 'isVarAliasFunc'] as $m) print __str::TAB.__str::TAB.Str::leftPad($m, 20).'=> '.Str::bool(PhpStx::$m($v)).PHP_EOL; } /* ---- foo->bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE foo::bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE foo->$bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE foo::$bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE foo->$$bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE foo::$$bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE foo->bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE foo::bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE foo->$bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE foo::$bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE foo->$$bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE foo::$$bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE bar() ..............isFunc => TRUE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $foo->bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $foo::bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $foo->$bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $foo::$bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $foo->$$bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $foo::$$bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $bar ..............isFunc => FALSE ...............isVar => TRUE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $foo->bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $foo::bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $foo->$bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $foo::$bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $foo->$$bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $foo::$$bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => TRUE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $$foo->bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $$foo::bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $$foo->$bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $$foo::$bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $$foo->$$bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $$foo::$$bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $$bar ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => TRUE ......isVarAliasFunc => FALSE $$foo->bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $$foo::bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $$foo->$bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $$foo::$bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $$foo->$$bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $$foo::$$bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => FALSE $$bar() ..............isFunc => FALSE ...............isVar => FALSE ...........isVarFunc => FALSE ..........isVarAlias => FALSE ......isVarAliasFunc => TRUE