变量,函数和类

时间:2011-09-08 06:36:22

标签: php variables anonymous-class variable-variables

我刚刚在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!

这有可能吗?

3 个答案:

答案 0 :(得分:2)

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

你不能错 变量变量绝对没什么了不起的。你最好发现 arrays

PHP也有可变的函数名称,并且它更有用,但它仍然使得阅读代码一个折磨。所以,最好还是避免它们。

记住最着名的只写语言的命运。 PHP只是因为PHP的可读性而吞噬了它。不要试图用PHP制作Perl。编写代码是休闲的,但要记下错误 - 这是一项真正的工作。不要让你的工作更难。

不要写出晦涩难懂的代码 写直接和干净的代码。
你会为自己和碰巧使用它的其他人做出巨大的帮助。

答案 1 :(得分:1)

不知道你的第三个例子,但你的第二个例子几乎可以工作(假设你使用的是php 5.3或更高版本;))。只需留下引号和功能名称:

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

搜索“匿名函数”或者,要了解更多相关信息,请查看documentation

答案 2 :(得分:-1)

唯一可行的方法是使用eval

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

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

function foo()
{
    echo 'Success';
}

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

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