Sadece değişken referanslar referans ile döndürülmelidir - Codeigniter


173

Sunucu PHP yükseltmesinden sonra Apache 2.0 PHP Sürüm 5.6.2 ile aşağıdaki hatayı alıyorum

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

Bunu nasıl düzeltebilirim?

Yanıtlar:


450

Dosya adını düzenle: core / Common.php, satır numarası: 257

Önce

return $_config[0] =& $config; 

Sonra

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

Güncelleme

NikiC tarafından eklendi

PHP'de atama ifadeleri her zaman atanan değeri döndürür. $ _Config [0] = & $ config $ config döndürür - değişkenin kendisini değil, değerinin bir kopyasını döndürür. Ve geçici bir değere referans döndürmek özellikle yararlı olmaz (değiştirmek hiçbir şey yapmaz).

Güncelleme

Bu düzeltme CI 2.2.1 ile birleştirildi ( https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3 ). Temel çerçeve dosyalarını değiştirmek yerine yükseltmek daha iyidir.


2
hiya ... bunu neden açıklayacağına nazik misin? işe yarıyor ve neden bilmiyorum: p
GuyFreakz

4
@GuyFreakz PHP'de atama ifadeleri her zaman atanan değeri döndürür . Yani $_config[0] =& $configdöner $config- ancak değişkenin kendisi değil, değerinin bir kopyası. Ve geçici bir değere referans döndürmek özellikle yararlı olmaz (değiştirmek hiçbir şey yapmaz).
NikiC

evet ... bu iyi olan! Neden bu şeyleri göstermek için verebilir ...: D
gumuruh

4
Bu, ci 2.2.1'de birleştirilmiştir https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3. @Chad'ın belirttiği gibi yükseltmek daha iyidir.
Syakur Rahman

1
Ben kod 244 (2.0.2) eski bir sürümü üzerinde bu düzeltme denemek zaman ben satır 243 (bu benim sürümde görünür) - Ben bir php 500 hatası alıyorum. Bunu nasıl çalıştırabileceğim hakkında bir fikrin var mı?
JoeM05

8

Bu kodigniter 2.2.1'de değiştirildi ... çekirdek dosyaları değiştirmek için genellikle en iyi uygulama değil, her zaman güncellemeleri kontrol ederim ve 2.2.1 Ocak 2015'te çıktı


1

Codeigniter'ın core.common dosyasını geçersiz kılmak daha iyi bir fikir değildir. Çünkü bu daha test edilmiş ve sistem dosyaları ....

Bu soruna bir çözüm getiriyorum. Ckeditor_helper.php dosya satırında - 65

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

Bunu -> olarak değiştir

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

Bence bu en iyi çözüm ve sorun bildiriminiz kaybolacak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.