PHP:动态创建变量

时间:2011-09-26 00:12:56

标签: php oop

我有一个类方法,如下所示:

public function something() {
    $this->create_varible('test');
    return $test;
}

我想通过将其名称作为参数传递给create variable method来创建一些变量(不是类变量)(如上所示),然后返回它的值。

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:12)

示例:

<?php

public function create_variable($name, $value) {
  // Dynamically create the variable.
  $this->{$name} = $value;
}

<?php

$stack = 'overflow';
${$stack} = 'example';

echo $overflow;

请记住变量的范围。

答案 1 :(得分:3)

我也没有看到这一点。但要按字面意思回答你的问题:

您可以将extract用于此目的:

public function something() {
    extract($this->create_varible('test'));
    return $test;
}

public function create_varible($varname) {
    return array ($varname => 12345);
}

->create_varible本身不能在调用者范围内创建变量。这就是为什么你需要在extract()中包含调用以获得所需效果的原因;无论其目的如何。

(是的,知道错字。)

答案 2 :(得分:2)

如何使用PHP的Magic Methods,特别是__get__set方法。

class Foo
{
  public function __set($varName, $value)
  {
    $GLOBALS[$varName] = $value;
  }
  public function __get($varname)
  {
    return isset($GLOBALS[$varName]) ? $GLOBALS[$varName] : null;
  }
}

$foo = new Foo();
$foo->test = "Bar";
echo $test; // output: Bar

在此处找到演示:http://www.ideone.com/nluJ5

P.S。我提到这个是因为如果你使用$this->,并假设你正在处理对象。

P.P.S。我认为@Francois有更好的解决方案,但提供另一种选择。