Php 如何通过变量调用函数
我希望这个问题不要太简单,但我不知道怎么做Php 如何通过变量调用函数,php,function,Php,Function,我希望这个问题不要太简单,但我不知道怎么做 $book = 'book'; $car = 'car'; function $book() { return "Hello, world!"; } function $car() { return "WoW , The red car"; } 您可以编写一个: 你不能那样做,你有两个选择 有两种方法: 使用: 类 class foo { public function __invoke(){ echo "hello"; }
$book = 'book';
$car = 'car';
function $book()
{
return "Hello, world!";
}
function $car()
{
return "WoW , The red car";
}
您可以编写一个:
你不能那样做,你有两个选择
有两种方法:
使用:
类
class foo
{
public function __invoke(){ echo "hello"; }
}
试验
输出
hello
还可以使用反射(以字符串形式调用现有函数)
输出
hello
good bye
ReflectionMethod也很不错,因为它可以维护对象的状态
class foo{
protected $bar;
public function setBar($bar){ $this->bar = $bar;}
public function bar(){ echo $this->bar; }
}
$obj = new foo;
$obj->setBar("good bye");
(new ReflectionMethod($obj, 'bar'))->invoke($obj);
输出
hello
good bye
您可以使用以下变量名调用函数:
获得相同输出的另一种方法:
在本例中,上述函数没有实际名称,而是由变量表示
让我举个例子:
<?php
$book = function() {
echo 'book function';
};
$a = $book;
echo $a();
@lawrencerone-我还没有达到PHPv7的要求,无论如何,我也不在生产代码中。也许还有3个月。最近花了两周时间研究PHP7兼容性(真实故事)最近很难跟上,等着吧<代码>echo(新的ReflectionFunction('sprintf'))->invokeArgs(['%s','Hello'])代码>;p+1对于不清楚的帖子,回答很好。这里有改进的余地,以便它可能成为一个好问题。你能澄清你的问题吗?因为很难说你到底想要什么。IMHO,没有任何改进。请澄清您是想要动态命名函数,还是想要通过变量中的值动态调用(静态)函数。@CJDennis我很想知道您为什么要求澄清,但是。“哦,这个问题还不清楚,我对它的投票仍然有效。”FunkFortyNiner编辑从1%到50%。这是一个进步,即使没有达到99%。
class foo{
protected $bar;
public function setBar($bar){ $this->bar = $bar;}
public function bar(){ echo $this->bar; }
}
$obj = new foo;
$obj->setBar("good bye");
(new ReflectionMethod($obj, 'bar'))->invoke($obj);
good bye
<?php
$a = 'book';
function book() {
echo 'book function';
}
// this is equivalent to book()
$a();
<?php
$functions = ['book', 'car'];
function book() {
return "Hello, world!";
}
function car() {
return "WoW , The red car";
}
foreach ($functions as $function) {
echo $function() .'<br>';
}
Hello, world!
WoW , The red car
$book = function() {
echo 'book function';
};
$book();
<?php
$book = function() {
echo 'book function';
};
$a = $book;
echo $a();
<?php
$functions = ['book', 'car'];
$book = function () {
return "Hello, world!";
};
$car = function() {
return "WoW , The red car";
};
foreach ($functions as $function) {
echo ${$function}(). '<br>';
}