Посилання повинні повертатися лише змінними посиланнями - Codeigniter


173

Після оновлення PHP сервера я отримую наступну помилку з PHP версії 5.6.2 на Apache 2.0

A PHP Error was encountered
Severity: Notice
Message: Only variable references should be returned by reference
Filename: core/Common.php
Line Number: 257

Як я можу це виправити?

Відповіді:


450

Редагувати назву файлу: core / Common.php, номер рядка: 257

До цього

return $_config[0] =& $config; 

Після

$_config[0] =& $config;
return $_config[0]; 

Оновлення

Додав NikiC

У програмі PHP-вирази завжди повертають призначене значення. Отже $ _config [0] = & $ config повертає $ config - але не саму змінну, а копію її значення. І повернення посилання на тимчасове значення не було б особливо корисним (змінити його нічого не призведе).

Оновлення

Це виправлення об’єднано в CI 2.2.1 ( https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3 ). Краще оновити, а не змінювати основні файлові рамки.


2
привіт ... ласкаво поясніть, чому це роблять? це працює, і я не знаю, чому: p
GuyFreakz

4
@GuyFreakz У виразах призначення PHP завжди повертається призначене значення . Отже, $_config[0] =& $configповертає $config- але не саму змінну, а копію її значення. І повернення посилання на тимчасове значення не було б особливо корисним (змінити його нічого не призведе).
NikiC

так ... це добре! Я не маю поняття, чому це могло б дати, щоб це було показано ...: D
gumuruh

4
це було об'єднано в ci 2.2.1 https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3. Краще оновити так, як згадував @Chad.
Сякур Рахман

1
Коли я намагаюся виправити це виправлення в рядку 243, я переглядаю старішу версію кодігінітера (2.0.2) - я отримую помилку php 500. Будь-яка ідея, як я можу це зробити?
JoeM05

8

це було змінено в кодигінітер 2.2.1 ... як правило, не найкраща практика для зміни основних файлів, я завжди перевіряв би наявність оновлень, а 2.2.1 вийшов у січні 2015 року


1

Це не найкраща ідея замінити файл core.common кодигітайтера. Тому що це більш перевірені та системні файли….

Я приймаю рішення для цієї проблеми. У рядку файлів ckeditor_helper.php- 65

if($k !== end (array_keys($data['config']))) {
       $return .= ",";
}

Змініть це на ->

 $segment = array_keys($data['config']);
    if($k !== end($segment)) {
           $return .= ",";
    }

Я думаю, що це найкраще рішення, і тоді ваше повідомлення про проблему зникне.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.