Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
如何才能保留关键字';克隆';PHP5中的函数是否与PHP7兼容?_Php_Keyword - Fatal编程技术网

如何才能保留关键字';克隆';PHP5中的函数是否与PHP7兼容?

如何才能保留关键字';克隆';PHP5中的函数是否与PHP7兼容?,php,keyword,Php,Keyword,PHP7兼容性检查指出了一些PHP5代码中与PHP7不兼容的两个错误 “clone”是PHP 5.0版和 无法作为函数调用(T_CLONE) 如何修复以下代码,使其与PHP7兼容 /** * Implements {@link aCssMinifierFilter::filter()}. * * @param array $tokens Array of objects of type aCssToken * @return integer Count of added, changed

PHP7兼容性检查指出了一些PHP5代码中与PHP7不兼容的两个错误

“clone”是PHP 5.0版和 无法作为函数调用(T_CLONE)

如何修复以下代码,使其与PHP7兼容

/**
 * Implements {@link aCssMinifierFilter::filter()}.
 *
 * @param array $tokens Array of objects of type aCssToken
 * @return integer Count of added, changed or removed tokens; a return value larger than 0 will rebuild the array
 */
public function apply(array &$tokens)
    {
    $r = 0;
    $transformations = array("-moz-keyframes", "-webkit-keyframes");
    for ($i = 0, $l = count($tokens); $i < $l; $i++)
        {
        if (get_class($tokens[$i]) === "CssAtKeyframesStartToken")
            {
            for ($ii = $i; $ii < $l; $ii++)
                {
                if (get_class($tokens[$ii]) === "CssAtKeyframesEndToken")
                    {
                    break;
                    }
                }
            if (get_class($tokens[$ii]) === "CssAtKeyframesEndToken")
                {
                $add    = array();
                $source = array();
                for ($iii = $i; $iii <= $ii; $iii++)
                    {
                    $source[] = clone($tokens[$iii]);
                    }
                foreach ($transformations as $transformation)
                    {
                    $t = array();
                    foreach ($source as $token)
                        {
                        $t[] = clone($token);
                        }
                    $t[0]->AtRuleName = $transformation;
                    $add = array_merge($add, $t);
                    }
                if (isset($this->configuration["RemoveSource"]) && $this->configuration["RemoveSource"] === true)
                    {
                    array_splice($tokens, $i, $ii - $i + 1, $add);
                    }
                else
                    {
                    array_splice($tokens, $ii + 1, 0, $add);
                    }
                $l = count($tokens);
                $i = $ii + count($add);
                $r += count($add);
                }
            }
        }
    return $r;
    }
}
/**
*实现{@link aCssMinifierFilter::filter()}。
*
*@param array$tokens类型的对象数组aCssToken
*@返回添加、更改或移除令牌的整数计数;大于0的返回值将重建数组
*/
应用公共函数(数组和$tokens)
{
$r=0;
$transformations=数组(“-moz关键帧”,“-webkit关键帧”);
对于($i=0,$l=count($tokens);$i<$l;$i++)
{
if(get_类($tokens[$i])==“cssatKeyframessStartToken”)
{
对于($ii=$i;$ii<$l;$ii++)
{
if(get_类($tokens[$ii])==“CssAtKeyframesEndToken”)
{
打破
}
}
if(get_类($tokens[$ii])==“CssAtKeyframesEndToken”)
{
$add=array();
$source=array();
对于($iii=$i;$iii AtRuleName=$transformation;
$add=array\u merge($add,$t);
}
if(设置($this->configuration[“RemoveSource”])&&&$this->configuration[“RemoveSource”]==true)
{
阵列拼接($tokens,$i,$ii-$i+1,$add);
}
其他的
{
数组拼接($tokens,$ii+1,0,$add);
}
$l=计数($tokens);
$i=$ii+计数($add);
$r+=计数($add);
}
}
}
返回$r;
}
}

因此,代码似乎正在尝试克隆对象。但是,在方法周围有括号

代码应该是

$t[] = clone $token;

clone
本身不是一个函数,它是一个调用对象的
\uu clone
方法的函数

您的项目中是否有任何函数名
clone()
,或者它是php内置的
clone
?将
clone
重命名为其他
$source[]=clone($iii]);
clone()定义的函数@Sohel0415嘿,我错了。时间不早了;我想我最好今晚把它挂起来。虽然这段代码片段可能会解决这个问题,但确实有助于提高你的文章质量。请记住,你是在将来为读者回答这个问题,而那些人可能不知道你的代码建议的原因。也请尽量不要使用c在代码中添加解释性注释,因为这会降低代码和解释的可读性!这对我很有效。删除将克隆标记为函数的参数,以便将其视为关键字。在第3346行中更改:
$source[]=clone($tokens[$iii]);
更改为:
$source[]=clone$tokens[$iii]第3353行中的
更改:
$t[]=clone($token);
为:
$t[]=clone$token;