我正在研究一个需要动态复制和执行函数的项目,其中的变量也需要动态替换。

一个简单的例子是这样的:

function myfunction()
{
    $abc = $_SESSION['abc'];
    return $abc;
}

我希望能够调用myfunction1(),它在代码中实际上不存在但与上面的内容完全相同,除了它现在从我的自定义变量获取值,所以它看起来像这样:

 function myfunction1()
 {
     $abc = $myCustomVariable;
     return $abc;
 }

有人帮忙吗?

===============>>#1 票数:1

这是参数的用途,我认为你看起来像这样:

$myCustomVariable = 'Some value';


function myfunction($var=$_SESSION['abc'])
{
    $abc = $var;
    return $abc;
}

myfunction(); //returns $_SESSION['abc']
myfunction($myCustomVariable); //returns "Some Value"

===============>>#2 票数:1 已采纳

您描述的函数越复杂,它就越像是注入依赖项的对象的完美候选者。

例如,您可以(这里将描述基本接口):

class myClass
{
    public function __construct($provider DataProvider)
    {
        $this->provider = $provider;
    }

    // Please name this something better
    public function doStufferer()
    {
        if ($this->provider->hasParam('foo'))
        {
            return $this->provider->getParam('foo');
        }
    }
}

class SessionProvider implements DataProvider
{
    // Session specific stuff
}

class OtherProvider implements DataProvider
{
    // Other provider stuff
}

interface DataProvider
{
    public function getParam($key);
    public function hasParam($key);
    public function setParam($key, $value);
}

然后你可以像这样使用它:

$dataProcessor = new myClass(new SessionProvider);
// OR $dataProcessor = new myClass(new OtherProvider);
$dataProcessor->doStufferer();

请查看PHP类和对象以及其他相关主题。

===============>>#3 票数:0

直接答案是eval ,我推荐。


你可以让你的函数接受一个参数,就像这样。

 function myfunction1($some_var)
 {
     $abc = $some_var;
     return $abc;
 }

 // call it like...
 myfunction1($myCustomVariable);

如果您需要访问变量,但名称是由动态代码生成的,则可以使用$GLOBALS

 function myfunction1($name_of_var)
 {
     $abc = $GLOBALS[$name_of_var];
     return $abc;
 }

 // call it like...
 $myCustomVariable = 'a value'
 myfunction1('myCustom' + 'Variable');

  ask by Olizt translate from so

未解决问题?本站智能推荐:

关注微信公众号