我有一个类方法,如下所示:
public function something() {
$this->create_varible('test');
return $test;
}
我想通过将其名称作为参数传递给create variable method
来创建一些变量(不是类变量)(如上所示),然后返回它的值。
提前感谢您的帮助。
答案 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有更好的解决方案,但提供另一种选择。