PHP在另一个自定义函数中使用不同的自定义函

时间:2014-12-04 16:20:43

标签: php function

我已经创建了函数

function do_stuff($text) {
   $new_text = nl2br($text);

   return $new_text;
}

$result = do_stuff("Hello \n World!"); 
//returns "Hello <br /> World!"

我希望能够提供另一个简单的内置PHP函数,例如 strtoupper()在我的函数内部,它不仅仅是我需要的strtoupper(),我需要能够为我的do_stuff()函数提供不同的函数。

说我想做这样的事情。

$result = do_stuff("Hello \n World!", "strtolower()");
//returns "Hello <br /> World!"

如何在不创建其他功能的情况下完成这项工作。

function do_stuff($text, $sub_function='') {
   $new_text = nl2br($text);

   $sub_function($new_text);

   return $new_text;
}

$result = do_stuff("Hello \n World!"); 
//returns "Hello <br /> World!"

P.S。记住变量变量,谷歌搜索,实际上也是变量函数,可能会自己回答这个变量函数。

http://php.net/manual/en/functions.variable-functions.php

4 个答案:

答案 0 :(得分:1)

你在第二个例子中有它。只需确保检查它是否存在,然后将返回值分配给字符串。这里假设函数接受/需要什么作为args以及它返回的内容:

function do_stuff($text, $function='') {
    $new_text = nl2br($text);

    if(function_exists($function)) {
        $new_text = $function($new_text);
    }
    return $new_text;
}

$result = do_stuff("Hello \n World!", "strtoupper"); 

答案 1 :(得分:1)

Callables可以是字符串,具有特定格式的数组,使用Closure创建的function () {};类的实例 - 语法和直接实现__invoke的类。您可以将其中任何一项传递给您的函数,并使用$myFunction($params)call_user_func($myFunction, $params)来调用它们。

除了在其他答案中已经给出的字符串示例之外,您还可以定义(新)函数(闭包)。如果您只需要在一个地方包含逻辑并且核心功能不合适,这可能特别有用。您还可以通过以下方式包装参数并从定义上下文传递其他值:

请注意,可调用的typehint需要php 5.4 +

function yourFunction($text, callable $myFunction) { return $myFunction($text); }

$offset = 5;

echo yourFunction('Hello World', function($text) use($offset) {
    return substr($text, $offset);
});

输出:http://3v4l.org/CFMrI

文档提示继续阅读:

答案 2 :(得分:0)

您可以调用这样的函数:

$fcn = "strtoupper";
$fcn();

以同样的方式(你自己发现),你可以有变量:

$a = "b";
$b = 4;
$$a;    // 4

答案 3 :(得分:0)

看起来你几乎就在那里,只需要在第二个参数中省略括号:

$result = do_stuff("Hello \n World!", "strtolower");

然后这应该在一点点清理之后起作用:

function do_stuff($text, $sub_function='') {
   $new_text = nl2br($text);

   if ($sub_function) {
      $new_text = $sub_function($new_text);
   }

   return $new_text;
}