如何在PHP5.2中实现函数模板,就像在PHP5.3中实现的那样?

如何在PHP5.2中实现函数模板,就像在PHP5.3中实现的那样?,php,closures,php-5.3,php-5.2,Php,Closures,Php 5.3,Php 5.2,此代码在PHP5.3中运行良好,但在PHP5.2中运行不好。如何在PHP5.2中实现类似的功能 echo "Calling func....<br/>"; function template_func( $data=array(), $func ) { echo "<ul>"; foreach ($data as $k => $v) { $func( $v ); } echo "</ul>"; }

此代码在PHP5.3中运行良好,但在PHP5.2中运行不好。如何在PHP5.2中实现类似的功能

echo "Calling func....<br/>";
function template_func( $data=array(), $func ) {
    echo "<ul>";
    foreach ($data as $k => $v) {
        $func( $v );    
    }
    echo "</ul>";
}

$data = array( 1, 2, 3, 4, 5 );

template_func( $data, function ( $v ) { 
    echo "<li>$v</li>"; 
} );

template_func( $data, function ( $v ) { 
    echo "<li><span class='style'>$v</span></li>"; 
} );
echo“调用函数…”
; 函数模板_func($data=array(),$func){ 回声“
    ”; foreach($k=>v的数据){ $func($v); } 回声“
”; } $data=数组(1,2,3,4,5); 模板函数($data,function($v){ 回声“
  • $v
  • ”; } ); 模板函数($data,function($v){ 回声“
  • $v
  • ”; } );
    您可以使用/。您必须将函数名作为字符串传递。您也可以通过这种方式调用方法和静态方法

    您还可以使用验证参数是否可以作为函数调用

    call\u user\u func()
    的一个简单示例:

    函数模板\u func($data=array(),$func){
    回声“
      ”; foreach($k=>v的数据){ 调用用户函数($func,$v); } 回声“
    ”; } 函数跨距列表($v){ 回声“
  • $v
  • ”; } 模板函数($data,'SPANDLIST');
    另一种方法是使用。这样,您甚至不必更改您可以使用的
    模板的定义。您必须将函数名作为字符串传递。您也可以通过这种方式调用方法和静态方法

    您还可以使用验证参数是否可以作为函数调用

    call\u user\u func()
    的一个简单示例:

    函数模板\u func($data=array(),$func){
    回声“
      ”; foreach($k=>v的数据){ 调用用户函数($func,$v); } 回声“
    ”; } 函数跨距列表($v){ 回声“
  • $v
  • ”; } 模板函数($data,'SPANDLIST');

    另一种方法是使用。这样,您甚至不必更改
    模板函数()的定义

    只需将匿名函数更改为
    创建函数

    template_func( $data, create_function( '$v', '
        echo "<li>$v</li>"; 
    ' ) );
    
    template_func( $data, create_function( '$v', '
        echo "<li><span class=\'style\'>$v</span></li>"; 
    ' ) );
    
    template_func($data,create_函数('v','
    回声“
  • $v
  • ”; ' ) ); 模板函数($data,create_函数($v',' 回声“
  • $v
  • ”; ' ) );
    只需将匿名函数更改为
    创建函数

    template_func( $data, create_function( '$v', '
        echo "<li>$v</li>"; 
    ' ) );
    
    template_func( $data, create_function( '$v', '
        echo "<li><span class=\'style\'>$v</span></li>"; 
    ' ) );
    
    template_func($data,create_函数('v','
    回声“
  • $v
  • ”; ' ) ); 模板函数($data,create_函数($v',' 回声“
  • $v
  • ”; ' ) );
    您可以在旧版本的PHP中使用
    create_函数
    ,但最好使用回调。您可以使用sprintf并提供模式字符串作为参数。您的PHP5.3代码也将从中受益。您可以在旧版本的PHP中使用
    create_函数
    ,但最好使用回调。您可以使用sprintf并提供模式字符串作为参数。您的PHP5.3代码也会从中受益。您的
    调用用户函数($func,$v)
    与只调用
    $func($v)
    有何不同?@newacct如果您不使用
    创建函数()
    ,您可以使用
    调用用户函数()
    ,并将函数名作为参数传递。或者我错过了什么?我相信
    $func($v)
    已经可以使用函数名
    $func
    create\u function()
    也只是返回一个函数名),所以没有必要使用
    call\u user\u func()
    你的
    call\u user\u func($func)
    $func($v)有什么不同
    ?@newacct如果不使用
    创建函数()
    ,则可以使用
    调用用户函数()
    并将函数名作为参数传递。还是我遗漏了什么?我相信
    $func($v)
    已经可以使用函数名
    $func
    create\u function()
    也只是返回一个函数名),所以没有必要使用
    call\u user\u func()