-1

可以在函数名中使用变量吗?(如果“是”,那怎么办?)

$name = "john";
  function name_function() {
    //Do something
  }

所以我的函数名称将是john_function()

你明白我的意思吗 ?

如果我有很多功能,我会做得更好,我会清楚地命名

john_init() john_setup() john_save() john_clear()

4

6 回答 6

7

它不能像你想要的那样完成,这似乎是

function $name_something(){  }

但是你可以像这样使用变量函数

function john_something()
{
    echo 'called';
}

$name = 'john';

$functionName = $name . '_something';

$functionName();

虽然不是推荐它,但几乎总是有更好的方法来做到这一点。

于 2012-11-02T10:39:20.823 回答
5

eval()是一种方式,把我个人认为是icky。

如果您将代码包含在一个类中,您可以使用:

class MyCode {
  public static function __callStatic($functionName, $values)
  {
    // $functionName Receive the name of the function
    // $values       Receives an array with all the parameters
    /* Your code per person here */
  }
}

您可以按如下方式调用此函数:

MyCode::johnDoesSomething('At home', 'playing with PHP');

有关详细信息,请参阅:http ://www.php.net/manual/en/language.oop5.overloading.php#object.call

于 2012-11-02T10:43:16.357 回答
3

在阅读了您对我的回答的问题和批评之后。我认为您只是在寻找 OOP 实现

class Person {
  public function __construct() // init()
  {
    /* Do something */        
  }

  public function setup()
  {
    /* Do something */
  }

  /* etc */
}

并按如下方式使用它:

$john = new Person(); // __construct() will be executed here automaticaly
$john->setup();

有关 PHP 中的类和对象的更多信息,请参阅 PHP 文档:http ://www.php.net/manual/fa/classobj.examples.php

于 2012-11-02T11:03:03.227 回答
1

用来create_function做这样的事情。

请参阅此处的手册

编辑:

也请检查Ariaan's回复。这更有用

于 2012-11-02T10:43:21.240 回答
0

尝试这样的事情:

$name = "john";
$f =   "function {$name}_function() {
    //Do something
  }";

eval($f);

john_function();

这是与您的问题匹配的唯一解决方案。这是一个糟糕的解决方案(危险),你最好避免eval()在任何地方使用。

http://php.net/manual/en/function.eval.php

于 2012-11-02T10:35:45.040 回答
0

您不能以能够以您建议的方式调用它的方式声明函数。

我会看看闭包(匿名函数) - 我怀疑这将是您任务的优雅解决方案。

于 2012-11-02T10:38:15.623 回答