新手问题......
是否可以使用函数的参数传递要在函数内执行的代码?有点像...
function myfunction($somecode)
{
$somecode;
}
myfunction("echo 'foo'");
实际场景:我的函数使用Imagick执行一些图像处理......
function myfunction($imagePath)
{
$image = new Imagick($imagePath);
$image->gaussianBlurImage(0, 5);
}
myfunction("test.jpg");
我希望能够在函数参数中指定要在图像上使用的Imagick方法,所以我可以使用类似的东西......
function myfunction($imagePath, $method)
{
$image = new Imagick($imagePath);
$image->$method;
}
myfunction("test.jpg", "thumbnailImage(100, 100)");
这样的事情可能吗?
答案 0 :(得分:1)
您也可以使用call_user_func_array
执行此操作,而不是使用匿名函数和变量变量function myfunction($imagePath, $method, array $arguments)
{
$image = new Imagick($imagePath);
call_user_func_array([$image, $method], $arguments);
}
myfunction("test.jpg", "thumbnailImage", [100,100]);
为了更加安全,您可以针对Imagick对象的可用方法的白名单检查方法。
答案 1 :(得分:0)
编程PHP (Lerdorf,Tatroe,& MacIntyre),第2版。 CH。 3,p。 73
“您可以使用create_function()
创建匿名函数。”
$lamda = create_function( '$param1,param2', 'code;' );
但是,在PHP 5.3及更高版本中还有更多要知道的内容。 来自匿名函数下的PHP手册的示例#2。
$greet = function($name)
{
printf("Hello %s\r\n", $name);
};