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.