将对象传递到Laravel Blade中的自定义控件结构

将对象传递到Laravel Blade中的自定义控件结构,laravel,blade,Laravel,Blade,我无法对传递给Laravel 4.1.23中自定义控件结构的对象调用成员函数 我的自定义控件结构: Blade::extend(function($view, $compiler){ $pattern = $compiler->createMatcher('paginatePretty'); $code = '$1<?php echo $2->getCurrentPage(); ?>'; retur

我无法对传递给Laravel 4.1.23中自定义控件结构的对象调用成员函数

我的自定义控件结构:

Blade::extend(function($view, $compiler){
    $pattern = $compiler->createMatcher('paginatePretty');
    $code = 
        '$1<?php
        echo $2->getCurrentPage();
        ?>';
    return preg_replace($pattern, $code, $view);
});
在编译时,我得到以下错误:

syntax error, unexpected '->' (T_OBJECT_OPERATOR), expecting ',' or ';'
自定义控件结构的编译方式如下:

echo ($articles)->getCurrentPage();
如何将对象传递给自定义控件结构?

使用
list()
array
解决以下问题:

Blade::extend(function($view, $compiler){
    $pattern = $compiler->createMatcher('paginatePretty');
    $code = 
        '$1<?php
        #echo $2->getCurrentPage();  --> the bad code
        list($_paginator) = array$2;
        echo $_paginator->getCurrentPage();
    ?>';
    return preg_replace($pattern, $code, $view);
});
Blade::extend(函数($view,$compiler){
$pattern=$compiler->createMatcher('paginatePretty');
$code=
'$1';
返回preg_replace($pattern,$code,$view);
});
在自定义控件结构中声明的变量前面加下划线,以避免视图中的冲突

Blade::extend(function($view, $compiler){
    $pattern = $compiler->createMatcher('paginatePretty');
    $code = 
        '$1<?php
        #echo $2->getCurrentPage();  --> the bad code
        list($_paginator) = array$2;
        echo $_paginator->getCurrentPage();
    ?>';
    return preg_replace($pattern, $code, $view);
});