Chỉ nên trả về các tham chiếu biến bằng tham chiếu - Codeigniter


173

Sau khi nâng cấp PHP máy chủ, tôi gặp lỗi sau với Phiên bản PHP 5.6.2 trên 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

Làm thế nào tôi có thể sửa lỗi này?

Câu trả lời:


450

Chỉnh sửa tên tệp: core / Common.php, số dòng: 257

Trước

return $_config[0] =& $config; 

Sau

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

Cập nhật

Được thêm bởi NikiC

Trong biểu thức gán gán PHP luôn trả về giá trị được gán. Vì vậy, $ _config [0] = & $ config trả về $ config - nhưng không phải là biến, mà là bản sao giá trị của nó. Và trả về một tham chiếu đến một giá trị tạm thời sẽ không đặc biệt hữu ích (thay đổi nó sẽ không làm gì cả).

Cập nhật

Bản sửa lỗi này đã được hợp nhất vào CI 2.2.1 ( https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3 ). Tốt hơn hết là nâng cấp thay vì sửa đổi các tệp khung lõi.


2
hiya ... loại để giải thích tại sao làm điều này? nó hoạt động và tôi không biết tại sao: p
GuyFreakz

4
@GuyFreakz Trong các biểu thức gán PHP luôn trả về giá trị được gán . Vì vậy, $_config[0] =& $configtrả về $config- nhưng không phải là chính biến, mà là một bản sao của giá trị của nó. Và trả về một tham chiếu đến một giá trị tạm thời sẽ không đặc biệt hữu ích (thay đổi nó sẽ không làm gì cả).
NikiC

vâng ... đó là một trong những tốt! Tôi không biết tại sao nó có thể cho những thứ đó được hiển thị ...: D
gumuruh

4
điều này đã được hợp nhất trong ci 2.2.1 https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3. Tốt hơn hết là nâng cấp như @Chad đã đề cập.
Syakur Rahman

1
Tôi đang sử dụng phiên bản cũ hơn của codeigniter (2.0.2) khi tôi thử bản sửa lỗi này trên dòng 243 (đó là nơi nó xuất hiện trong phiên bản của tôi) - Tôi gặp lỗi php 500. Bất cứ ý tưởng làm thế nào tôi có thể làm việc này?
JoeM05

8

điều này đã được sửa đổi trong codeigniter 2.2.1 ... thường không phải là cách tốt nhất để sửa đổi các tệp cốt lõi, tôi sẽ luôn kiểm tra các bản cập nhật và 2.2.1 xuất hiện vào tháng 1 năm 2015


1

Không nên ghi đè tệp core.common của codeigniter. Bởi vì đó là các tệp hệ thống và thử nghiệm nhiều hơn ....

Tôi làm một giải pháp cho vấn đề này. Trong dòng tệp ckeditor_helper.php của bạn- 65

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

Thay đổi điều này thành ->

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

Tôi nghĩ rằng đây là giải pháp tốt nhất và sau đó thông báo vấn đề của bạn sẽ biến mất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.