Hanya referensi variabel yang harus dikembalikan dengan referensi - Codeigniter

173

Setelah upgrade PHP server saya mendapatkan kesalahan berikut dengan PHP Versi 5.6.2 di 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

Bagaimana saya bisa memperbaikinya?

Techie
sumber

Jawaban:

450

Edit nama file: core / Common.php, nomor baris: 257

Sebelum

return $_config[0] =& $config; 

Setelah

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

Memperbarui

Ditambahkan oleh NikiC

Dalam penugasan PHP ekspresi selalu mengembalikan nilai yang diberikan. Jadi $ _config [0] = & $ config mengembalikan $ config - tetapi bukan variabel itu sendiri, tetapi salinan nilainya. Dan mengembalikan referensi ke nilai sementara tidak akan terlalu berguna (mengubahnya tidak akan melakukan apa-apa).

Memperbarui

Perbaikan ini telah digabung menjadi CI 2.2.1 ( https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3 ). Lebih baik untuk meningkatkan daripada memodifikasi file kerangka kerja inti.

Techie
sumber
2
hai ... tolong jelaskan mengapa melakukan ini? ini bekerja dan saya tidak tahu mengapa: p
GuyFreakz
4
@GuyFreakz Dalam PHP ekspresi penugasan selalu mengembalikan ditugaskan nilai . Jadi $_config[0] =& $configmengembalikan $config- tetapi bukan variabel itu sendiri, tetapi salinan nilainya. Dan mengembalikan referensi ke nilai sementara tidak akan terlalu berguna (mengubahnya tidak akan melakukan apa-apa).
NikiC
ya ... itu bagus! Saya tidak tahu mengapa hal itu bisa ditunjukkan ...: D
gumuruh
4
ini telah digabungkan dalam ci 2.2.1 https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3. Lebih baik memutakhirkan seperti yang disebutkan @Chad.
Syakur Rahman
1
Saya menggunakan versi yang lebih lama dari codeigniter (2.0.2) ketika saya mencoba memperbaiki ini pada baris 243 (di situlah muncul dalam versi saya) - Saya mendapatkan kesalahan php 500. Adakah yang tahu bagaimana saya bisa membuatnya bekerja?
JoeM05
8

ini telah dimodifikasi dalam codeigniter 2.2.1 ... biasanya bukan praktik terbaik untuk memodifikasi file inti, saya akan selalu memeriksa pembaruan dan 2.2.1 keluar pada Jan 2015

Chad
sumber
1

Bukan ide yang lebih baik untuk mengganti file code.com dari core.common. Karena itulah file sistem dan file yang lebih teruji ....

Saya membuat solusi untuk masalah ini. Dalam file baris ckeditor_helper.php Anda

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

Ubah ini menjadi ->

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

Saya pikir ini adalah solusi terbaik dan kemudian pemberitahuan masalah Anda akan hilang.

Maniruzzaman Akash
sumber