如何在PHP5.2中实现函数模板,就像在PHP5.3中实现的那样?
此代码在PHP5.3中运行良好,但在PHP5.2中运行不好。如何在PHP5.2中实现类似的功能如何在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>"; }
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()