2011-07-25 9 views
14

Nhận các lỗi này "Không được chấp nhận: Việc chỉ định giá trị trả lại mới bằng tham chiếu không được chấp nhận ..."PHP làm gì với các chức năng không được chấp nhận?

Trong khi tôi biết chức năng không dùng nữa nghĩa là gì, nhưng tôi không rõ ràng về PHP? Vẫn thực hiện chúng như thường lệ? Vì vậy, tại thời điểm này cho chức năng này, hiện PHP âm thầm chỉ định vị trí bộ nhớ cho biến hoặc vẫn còn sử dụng con trỏ tham chiếu?

EDIT - cảm ơn câu trả lời, tôi đã hỏi câu hỏi này vì chúng tôi đang sử dụng adodb_lite và thư viện chưa sửa lỗi.

+1

[ADOdb Lite] (http://sourceforge.net/projects/adodblite/) là phần mềm miễn phí, vì vậy bạn có thể tham gia giúp họ khắc phục sự cố. Thông thường, điều này được thực hiện bằng cách liên hệ với một dự án thông qua trình gỡ lỗi của họ (danh sách trên web để theo dõi các vấn đề) và thảo luận vấn đề với họ. Những nỗ lực tập thể trở lại phần mềm. Chúng tôi chia sẻ mã - chúng tôi chia sẻ các lỗi. – hakre

+0

Có, tôi biết điều đó là miễn phí. Tôi đã kiểm tra bộ theo dõi lỗi, ai đó đã nêu vấn đề này một thời gian trước. Dường như không ai (ngay cả chủ dự án) cũng muốn giải quyết nó. –

Trả lời

16

Chức năng bị hủy vẫn tồn tại và bạn nhận được cảnh báo. Vì vậy, họ làm việc như mong đợi. Tuy nhiên trong một phiên bản tương lai họ có thể biến mất.

Điều này cũng giống với các tính năng ngôn ngữ không dùng nữa mà đôi khi bạn nhận được thông báo. Đó là cách để báo hiệu thay đổi cho người dùng có mã dựa trên phiên bản PHP cũ hơn.

Thông thường, các tính năng không được chấp nhận sẽ bị xóa sau một thời gian, nhưng không thể dự đoán được thời gian sử dụng. Tôi biết ít nhất một trường hợp một tính năng không được dùng nữa đã không được dùng nữa sau này. Tuy nhiên, tôi nghĩ điều đó thật đặc biệt.

Vì vậy, nếu bạn thấy các cảnh báo này, hãy cập nhật mã. Thông thường, tài liệu PHP có nhiều thông tin hơn tại sao một cái gì đó không được chấp nhận và phải làm gì. Thông thường nó là một sự cải tiến (ví dụ như trong bảo mật), vì vậy bạn thực sự nên đối phó với những cảnh báo này nếu bạn quan tâm đến mã.

Chỉnh sửa: Tôi nghĩ điều này cũng đáng chú ý trong ngữ cảnh này để tìm kiếm strict standards noticesPHP Manual. Chúng có liên quan một phần vì những thông báo này là gợi ý hữu ích cho những thay đổi trong ngôn ngữ.

Bật E_STRICT trong khi phát triển có một số lợi ích. Thông báo STRICT sẽ giúp bạn sử dụng phương pháp mã hóa được đề xuất mới nhất và tốt nhất, ví dụ: cảnh báo bạn về việc sử dụng các chức năng không dùng nữa.

(từ liên kết Manual PHP ở trên)

+2

Kể từ PHP 5.3, cảnh báo được ném là 'E_DEPRECATED' hoặc' E_USER_DEPRECATED' - trong các phiên bản trước, tôi nghĩ đó là 'E_NOTICE' –

3

Họ sẽ tiến hành chạy như tài liệu, nhưng họ có thể được loại bỏ trong tương lai và do đó nên được chuyển đổi càng sớm càng tốt trong mã hiện có, và không được sử dụng trong mã mới.

1

Không có gì, đó chỉ là cảnh báo. Đọc nó như là "chức năng này vẫn hoạt động như tài liệu cho phiên bản này của PHP, nhưng tất cả các cược được tắt trong các phiên bản trong tương lai". Bên trong không có sự khác biệt nào cả, ngoại trừ việc thêm cảnh báo không dùng nữa.

3

Tính năng không được chấp nhận hoạt động, nhưng có các lựa chọn thay thế tốt hơn và chúng có thể bị xóa trong các phiên bản PHP sau này.

1

Chúng vẫn được thực thi như 'bình thường'.

Tuy nhiên, bạn cần phải bỏ chúng nhanh nhất có thể để mã của bạn tiếp tục hoạt động trong tương lai.

1

Ngoài việc phát ra cảnh báo không dùng nữa, mã sẽ hoạt động tốt. Việc ngừng sử dụng cho biết tính năng được đề cập có thể bị xóa trong tương lai.

This warning đề cập đến một dòng như

$obj =& new MyClass(); 

dấu và không yêu cầu bất kỳ hơn vì php 5; bạn có thể chỉ cần viết

$obj = new MyClass(); 
3

Tôi tin rằng PHP tiếp tục thực thi chức năng trong khi bổ sung kích hoạt lỗi nói rằng chức năng không được chấp nhận.

Ye Olde Version:

function foo(){ 
    bar(); 
} 

Phiên bản mới:

function foo(){ 
    bar(); 
    trigger_error('Deprecated: this function is deprecated foo!', E_NOTICE); 
} 

Lưu ý: đây là lẽ khôngthực xảy ra đằng sau hậu trường, nhưng nó sẽ là tương đối tương đương .

0

Các hàm khấu hao vẫn tồn tại tuy nhiên bạn nhận được cảnh báo, nghĩa là các chức năng như vậy sẽ không khả dụng trong tương lai.