具有匿名功能“使用”的动态元素

问题描述 投票:0回答:1

我想知道是否有可能创建一个在匿名函数上使用“ use”来使用differents元素/变量的函数。

例如,我有这种脚本:

$loadScript = function($src) use ($var1, $var2, $var3)
{
   ob_start();
   include($src);
   $result = json_decode(ob_get_clean(),true);
   return $result;
};
$result = $loadScript();

而且我想用该脚本创建一个函数,该脚本可以允许对use使用动态变量,如下所示:

$src = 'src/...';
$arrayOfUseVars = array($var1,$var2,$var3,...);
function loadScript($src, $arrayOfUseVars)
{
    function($src) use ($arrayOfUseVars)
    {
       ob_start();
       include($src);
       $result = json_decode(ob_get_clean(),true);
       return $result;
    };
}

我不知道是否可以使用vars数组($ arrayOfUseVars)或其他可以动态添加一个或多个vars的方法($ var1,$ var2,$ var3,$ var4,...) ?

谢谢

php
1个回答
0
投票

无法通过函数调用直接传递命名变量。但是,您可以使用assoc数组声明命名变量。

<?php

$src = 'src/...';
$arrayOfUseVars = array(
  'var1' => $var1,
  'var2' => $var2,
  'var3' => $var3,
);

function loadScript($src, $arrayOfUseVars)
{
    function($src) use ($arrayOfUseVars)
    {
       foreach ($arrayOfUseVars as $_name => $_value) {
         $$_name = $_value;
       }
       ob_start();
       include($src);
       $result = json_decode(ob_get_clean(),true);
       return $result;
    };
}
© www.soinside.com 2019 - 2024. All rights reserved.