$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