-1

我最近在 PHP 中发现了可变变量,不用说,它的用处是巨大的:

$name = "ABC";
$$name = "DEF";
echo ${"ABC"}; //Gives: DEF

这让我开始思考,这让我们想到了我的问题:

既然我们可以有变量的名字,我们不能也有变量的函数吗?不是函数名称中的“函数”,而是(或多或少)如下:

$func = 'function test() { echo "Success!"; }';
$func(); //If this would work, it would give: Success!

或者,更好的是,变量类:

$class = 'class { function test() { echo "Success!"; } }';
$instance = new $class;
$instance->test(); //In a (not-so) perfect world this would give: Success!

这有可能吗?

4

3 回答 3

2

不用说,它的用处是巨大的

你不能再错了。
变量变量绝对没有什么了不起的。你最好发现数组

PHP 也有变量函数名,而且它更实用一些,但它仍然让阅读你的代码成为一种折磨。因此,最好也避免它们。

记住最著名的只写语言的命运。PHP 一口气吃掉了它,只是因为 PHP 的可读性。不要试图让 Perl 脱离 PHP。编写代码是一种休闲,但找出其中的错误是一项真正的工作。不要让你的工作更难。

不要编写晦涩难懂的代码。
编写直截了当的代码。
你会对自己和其他碰巧使用它的人大有裨益。

于 2011-09-08T06:58:24.877 回答
1

不知道您的第三个示例,但您的第二个示例应该几乎可以工作(假设您使用的是 php 5.3 或更高版本;))。只留下引号和函数名称:

$func = function() { echo "Success!"; };
$func(); //should give: Success!

搜索“匿名函数”,或者,要了解更多信息,只需查看文档

于 2011-09-08T06:41:27.483 回答
-1

唯一可行的方法是使用eval.

$func = "echo 'Success!';";
eval($func);

您也可以使用变量来调用函数。

function foo()
{
    echo 'Success';
}

$foo = 'foo';
$foo();

请记住 - 您正在进入 PHP 的危险区域,因为这通常只会混淆您的代码,以便任何未来必须维护您的代码的开发人员(包括您自己在几个月内)。

于 2011-09-08T06:43:49.280 回答