Как перекодировать использование PHP по назначению по ссылке

Моя программа проверки устаревания выдает эту ошибку:

Using deprecated language feature assign by reference(&=) Since PHP 5.3 use normal assignment instead.

Итак, я пытаюсь выяснить, как перекодировать методы в этом классе, чтобы не использовать by reference или, по крайней мере, используйте его должным образом (если это вообще разрешено — что мне тоже не ясно).

ниже часть класса, использующая by reference, Весь класс Вот, тестовое задание и журнал проверки амортизации Вот.

Я хотел бы помочь с перекодировкой класса, чтобы исключить использование by reference

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

0

Решение

Это похоже на ошибку в инструменте устаревания. В соответствии с Устаревшие функции в PHP 5.3.x:

  • Назначение возвращаемого значения new по ссылке сейчас устарела.
  • Передача по ссылке во время разговора устарела.

Но назначение по ссылке в целом не считается устаревшим, и Возвращение ссылок говорит:

Чтобы использовать возвращенную ссылку, вы должны использовать ссылку ссылки

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]