fruffl icon

doxygen filter trait method alias

fruffl | 10/17/15 12:03:47 PM UTC | 0 ⭐ | 316 👁️ | Never ⏰ | []
PHP |

2.6 KB

|

None

|

0 👍

/

0 👎

$x = <<<'foo'
<?PHP
    namespace ILLI\Core\Std\ICopyableObject;
    use ILLI\Core\Std\ICopyableObject;
    use ILLI\Core\Std\Fn;
    use Closure         as SplClosure;
    use ReflectionClass     as SplReflectionClass;
    use ReflectionObject        as SplReflectionObject;
    use ReflectionProperty      as SplReflectionProperty;
    use Traversable         as SplTraversable;
    
    trait __import_IDefaultObject
    {
        use __trait_IDefaultObject
        {
            #:interface:
            Core_Std_IDefaultObject___trait_IDefaultObject___toString   as public __toString;
            Core_Std_IDefaultObject___trait_IDefaultObject_equals       as public equals;
            Core_Std_IDefaultObject___trait_IDefaultObject_getClassName as public getClassName;
            Core_Std_IDefaultObject___trait_IDefaultObject_getHashCode  as public getHashCode;
            Core_Std_IDefaultObject___trait_IDefaultObject_toArray      as public toArray;
            Core_Std_IDefaultObject___trait_IDefaultObject_toString     as public toString;
            #::
            #:__internal:
            #::
        }
    }
    
foo;
    
print $x;
 
$x = preg_replace_callback('#(?P<open>(class|trait)[\s]+([\S]+)[\s]*[\s]+{)(?P<body>[\s\S]+)?(?P<close>[\s]+})#i', function($r)
{
    $r['body'] = preg_replace_callback('#(?P<open>use[\s]+([\S]+)[\s]*[\s]+{)(?P<body>[\s\S]+)?(?P<close>[\s]+})#i', function($r)
    {
        $r['body'] = preg_replace_callback('#(?P<method>([\s]+[\S]+)[\s]+as(?:[\s]+(public|protected|private))?)(?P<alias>[\s]+([\S]+));#i', function($r)
        {
            return $r['method'].' function '.$r['alias'].'(){}';
        }, $r['body']);
        
        return $r['open'].$r['body'].$r['close'];
    }, $r['body']);
    
    return $r['open'].$r['body'].$r['close'];
}, $x);
 
print $x;
 
/*
 
    <?PHP
    namespace ILLI\Core\Std\ICopyableObject;
    use ILLI\Core\Std\ICopyableObject;
    use ILLI\Core\Std\Fn;
    use Closure         as SplClosure;
    use ReflectionClass     as SplReflectionClass;
    use ReflectionObject        as SplReflectionObject;
    use ReflectionProperty      as SplReflectionProperty;
    use Traversable         as SplTraversable;
    
    trait __import_IDefaultObject
    {
        use __trait_IDefaultObject
        {
            #:interface:
            Core_Std_IDefaultObject___trait_IDefaultObject___toString as public function __toString(){}
            Core_Std_IDefaultObject___trait_IDefaultObject_equals as public function equals(){}
            Core_Std_IDefaultObject___trait_IDefaultObject_getClassName as public function getClassName(){}
            Core_Std_IDefaultObject___trait_IDefaultObject_getHashCode as public function getHashCode(){}
            Core_Std_IDefaultObject___trait_IDefaultObject_toArray as public function toArray(){}
            Core_Std_IDefaultObject___trait_IDefaultObject_toString as public function toString(){}
            #::
            #:__internal:
            #::
        }
    }
*/

Comments