Нет никаких преимуществ, вызывающих эту функцию, потому что я думаю, что в основном она используется для вызова функции «пользователь» (например, плагина), потому что редактирование файла ядра не является хорошим вариантом. здесь являются грязным примером, используемым Wordpress
<?php
/*
* my_plugin.php
*/
function myLocation($content){
return str_replace('@', 'world', $content);
}
function myName($content){
return $content."Tasikmalaya";
}
add_filter('the_content', 'myLocation');
add_filter('the_content', 'myName');
?>
...
<?php
/*
* core.php
* read only
*/
$content = "hello @ my name is ";
$listFunc = array();
// store user function to array (in my_plugin.php)
function add_filter($fName, $funct)
{
$listFunc[$fName]= $funct;
}
// execute list user defined function
function apply_filter($funct, $content)
{
global $listFunc;
if(isset($listFunc))
{
foreach($listFunc as $key => $value)
{
if($key == $funct)
{
$content = call_user_func($listFunc[$key], $content);
}
}
}
return $content;
}
function the_content()
{
$content = apply_filter('the_content', $content);
echo $content;
}
?>
....
<?php
require_once("core.php");
require_once("my_plugin.php");
the_content(); // hello world my name is Tasikmalaya
?>
выход
hello world my name is Tasikmalaya
Спасибо, Кай. call_user_func оказался именно тем, что мне нужно. – jay
'call_user_func' необязательно необходимо. Вы всегда можете вызывать функцию с помощью переменных функций: '$ some_func()'. 'call_user_func_array' - тот, который действительно полезен. –
php всегда нуждается в «поиске функции во время выполнения» – VolkerK