protected static function is($__is, $__optional, $__never, $__in) { $__in = static::request($__in); if(FALSE === ($__is === ($__is & $__in))) { return FALSE; } foreach(ClsInf::constants(get_called_class()) as $k => $v) { foreach((array) $__never as $group) if($v === ($v & $group) && $v === ($v & $__in)) { print __str::TAB.__str::TAB.'EXIT '.$k.PHP_EOL; return FALSE; } foreach((array) $__never as $group) if($v === ($v & $group) && $v === ($v & $__in)) { print __str::TAB.__str::TAB.'OPTIONAL '.$k.PHP_EOL; return TRUE; } } return TRUE; } static function isObjectProperty($__request) { return static::is ( self::T_PAIR, // always base with sub self::T_P1_VAR|self::T_P1_ALIAS|self::T_P2_VAR|self::T_P2_ALIAS, // valid is ($?($?)base with ($?($?)sub self::T_FUNC|self::T_STATIC, // never base::sub or base::sub() $__request ); } static function isStaticProperty($__request) { return static::is ( self::T_PAIR|self::T_STATIC, // always base with sub, always base::sub self::T_P1_VAR|self::T_P1_ALIAS|self::T_P2_VAR|self::T_P2_ALIAS, // valid is ($?($?)base with ($?($?)sub self::T_FUNC, // never base::sub() $__request ); }