PHP 5中的保留关键字'clone'如何与PHP 7兼容?

时间:2018-02-25 04:42:12

标签: php keyword

PHP 7兼容性检查指出某些PHP 5代码中的两个错误与PHP 7不兼容。

  

'clone'是PHP 5.0和PHP中引入的保留关键字   不能作为函数调用(T_CLONE)

如何修复以下代码以使其与PHP 7兼容?

/**
 * 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;
    }
}

1 个答案:

答案 0 :(得分:0)

因此,看起来代码正在尝试克隆一个对象。但是,你在方法周围有括号。

代码应该是

Source="{Binding ImageUri, Converter={StaticResource StringToUriConverter}"

$t[] = clone $token; 本身不是一个函数,它是一个调用对象的clone方法的函数