2017-09-22 66 views
0

我知道如何工作的功能在PHP,但我发现下面的代码,我不明白电话:功能没有名为php

功能($匹配)

它不应该是这样的:

功能NAME_OF_FUNCTION($匹配)

有人能解释一下吗?谢谢

// Nice little function that convert a string to uppercase by keeping the HTMLentities intact. 
public static function strtoupper_entities($str) { 

    $patternMajEntities = '/(\&([A-Z])(ACUTE|CEDIL|CARON|CIRC|GRAVE|ORN|RING|SLASH|TH|TILDE|UML)\;)+/'; 
    $str = preg_replace_callback ($patternMajEntities, 
     function ($matches) { 
      return "&" . $matches[2] . strtolower($matches[3]) . ";"; 
     }, strtoupper($str)); 

    return $str; 
} 

回答

2

本身被作为参数传递给preg_replace_callback传递的功能。结构上,它基本上是:

preg_replace_callback($some_value, function() { ... }, $another_value); 

preg_replace_callback的功能有名称,参数的名称。所以,如果它被定义为是这样的:该函数内部

function preg_replace_callback($pattern, $callback, $input) 

然后某个地方,这将调用传递给它的一个:

$callback(); 

功能的在线声明是anonymous function。文档显示一个简单的演示:

$greet = function($name) { 
    printf("Hello %s\r\n", $name); 
}; 
$greet('World');