Roller\ClosureSerializer::serialize PHP Метод

serialize() статический публичный Метод

serialize closure
static public serialize ( $closure )
    static function serialize($closure)
    {
        if (!is_a($closure, 'Closure')) {
            return var_export($closure, true);
        }
        $ref = new ReflectionFunction($closure);
        $file = new SplFileObject($ref->getFileName());
        $file->seek($ref->getStartLine() - 1);
        $code = '';
        while ($file->key() < $ref->getEndLine()) {
            $code .= $file->current();
            $file->next();
        }
        $start = strpos($code, 'function');
        $end = strrpos($code, '}') + 1;
        return substr($code, $start, $end - $start);
    }

Usage Example

Пример #1
0
 function dump($routes)
 {
     $out = new ezcConsoleOutput();
     /*
     		$out->formats->headline->color = 'red';
     		$out->formats->headline->style = array( 'bold' );
     
     		$out->formats->sum->color = 'blue';
     		$out->formats->sum->style = array( 'negative' );
     */
     $table = new ezcConsoleTable($out, 120);
     $table[0][0]->content = 'Path';
     $table[0][1]->content = 'Pattern';
     $table[0][2]->content = 'Handler';
     $table[0][3]->content = 'Requirement';
     foreach ($routes->routes as $i => $route) {
         // create new row
         $row = $table[$i + 1];
         $path = $route['path'];
         // $pattern = str_replace(array("\n","\t"," "),'', $route['compiled'] );
         $pattern = $route['compiled'];
         $handler = \Roller\ClosureSerializer::serialize($route['callback']);
         $requirement = @$route['requirement'] ?: array();
         $row[0]->content = $path;
         $row[1]->content = $pattern;
         $row[2]->content = $handler;
         $row[3]->content = var_export($requirement, true);
     }
     $table->outputTable();
 }
All Usage Examples Of Roller\ClosureSerializer::serialize
ClosureSerializer