Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何重新编码PHP按引用分配用法_Php_Pass By Reference_Return By Reference_Zikula_Pass By Reference Value - Fatal编程技术网

如何重新编码PHP按引用分配用法

如何重新编码PHP按引用分配用法,php,pass-by-reference,return-by-reference,zikula,pass-by-reference-value,Php,Pass By Reference,Return By Reference,Zikula,Pass By Reference Value,我的弃用检查器引发以下错误: 使用不推荐使用的语言功能通过引用分配(&=),因为PHP5.3使用普通分配。 因此,我试图找出如何重新编码这个类中的方法,使其不通过引用使用,,或者至少正确地使用它(如果允许的话,我也不清楚) 下面是通过引用使用的课程部分。整个类为,弃用检查器日志为 我想获得一些帮助,重新编码该类,以删除通过引用使用 class ParameterBag { /** * Sets value. * can use 'key' = ['subkey'

我的弃用检查器引发以下错误:

使用不推荐使用的语言功能通过引用分配(&=),因为PHP5.3使用普通分配。

因此,我试图找出如何重新编码这个类中的方法,使其不通过引用使用
,或者至少正确地使用它(如果允许的话,我也不清楚)

下面是通过引用使用
的课程部分。整个类为,弃用检查器日志为

我想获得一些帮助,重新编码该类,以删除通过引用使用

class ParameterBag
{
    /**
     * Sets value.
     *   can use 'key' = ['subkey' => value, 'subkey2' => value2]
     *      or
     *   'key.subkey' = value
     *   'key.subkey2' = value2
     *
     * @param $key
     * @param $value
     */
    public function set($key, $value)
    {
        $parameters = &$this->resolvePath($key, true);
        $key = $this->resolveKey($key);
        $parameters[$key] = $value;
    }

    /**
     * Resolves a path in parameters property and returns it as a reference.
     *
     * This method allows structured namespacing of parameters.
     *
     * @param string  $key         Key name
     * @param boolean $writeContext Write context, default false
     *
     * @return array
     */
    private function &resolvePath($key, $writeContext = false)
    {
        $array = &$this->parameters;
        $key = (strpos($key, $this->ns) === 0) ? substr($key, 1) : $key;

        // Check if there is anything to do, else return
        if (!$key) {
            return $array;
        }

        $parts = explode($this->ns, $key);
        if (count($parts) < 2) {
            if (!$writeContext) {
                return $array;
            }

            $array[$parts[0]] = [];

            return $array;
        }

        unset($parts[count($parts) - 1]);

        foreach ($parts as $part) {
            if (!array_key_exists($part, $array)) {
                if (!$writeContext) {
                    return $array;
                }

                $array[$part] = [];
            }

            $array = &$array[$part];
        }

        return $array;
    }
}
类参数包
{
/**
*设置值。
*可以使用'key'=['subkey'=>value,'subkey2'=>value2]
*或
*“key.subkey”=值
*'key.subkey2'=值2
*
*@param$key
*@param$value
*/
公共函数集($key,$value)
{
$parameters=&$this->resolvePath($key,true);
$key=$this->resolveKey($key);
$parameters[$key]=$value;
}
/**
*解析parameters属性中的路径并将其作为引用返回。
*
*此方法允许参数的结构化命名空间。
*
*@param string$key key name
*@param boolean$writeContext写入上下文,默认为false
*
*@return数组
*/
私有函数&resolvePath($key,$writeContext=false)
{
$array=&$this->parameters;
$key=(strpos($key,$this->ns)==0)?substr($key,1):$key;
//检查是否有什么事要做,否则返回
如果(!$key){
返回$array;
}
$parts=explode($this->ns,$key);
如果(计算($parts)<2){
如果(!$writeContext){
返回$array;
}
$array[$parts[0]]=[];
返回$array;
}
未设置($parts[计数($parts)-1]);
foreach($parts作为$part){
如果(!array_key_存在($part,$array)){
如果(!$writeContext){
返回$array;
}
$array[$part]=[];
}
$array=&$array[$part];
}
返回$array;
}
}

这似乎是弃用工具中的一个错误。根据:

  • 通过引用指定
    new
    的返回值现在已不推荐使用
  • 现在不推荐使用按引用传递调用时间
但一般来说,引用赋值并不是不可取的,它说:

要使用返回的引用,必须使用引用分配


错误指的是哪一行?我看不到代码中的任何地方。有几行产生了相同的错误。它们都列在日志中:(也在上面链接)。基本上所有的行中都有
&
。我们将看看他们是否同意;-)