2011-11-22 28 views

Trả lời

6

Nếu sử dụng PHP5, không có sự khác biệt.

Nếu sử dụng PHP4, trước đây chuyển một tham chiếu đến đối tượng mới.

Điều này là do "mới" không trả về tham chiếu theo mặc định, thay vào đó nó trả về bản sao.

Source.

Give this a read, too.

+0

Trong PHP4, những gì khác biệt sẽ có một tham chiếu đến đối tượng mới làm? – Casebash

+1

@Casebash: PHP4 sao chép các cá thể đối tượng thay vì chuyển tham chiếu theo mặc định. '&' là toán tử * reference *. – alex

3

Sử dụng PHP5? Sau đó, bạn nên sử dụng các mục sau:

$myVar=new MyClass(); 

Đây là cách được chấp nhận để khởi tạo lớp học.


Sử dụng sau khi E_STRICT được kích hoạt:

$myVar=&new MyClass(); 

sẽ gây ra các runtimes PHP để nâng cao cảnh báo Deprecated: Assigning the return value of new by reference is deprecated.

+0

Tại sao lại tăng cảnh báo? Cái mà có thể sai lầm? – Casebash

+0

@Casebash: Nó chỉ là một gợi ý rằng hành vi đã thay đổi từ phiên bản chính trước đó và rằng hành vi bây giờ là ngầm tôi đoán. – alex

+0

@Casebash: Hành vi không được chấp nhận của nó. Không có lý do trong PHP5 lý do tại sao bạn sẽ đặt '&' trước một khởi tạo thể hiện. –

0

&new đã bị xóa khỏi PHP7, bạn phải sử dụng new thay thế.

Phân công mới bằng cách tham khảo

Kể từ PHP 5.3 nhượng biểu thức mới bằng cách tham khảo được phản đối. Nó có thể được thay thế bằng bài tập bình thường 1):

// Thay vì $ obj = & Tên lớp mới;

// Viết $ obj = new ClassName;

Chỉ định giá trị trả lại theo tham chiếu không còn cần thiết kể từ PHP 5.0.

Kiểm tra chủ đề này https://wiki.php.net/rfc/remove_deprecated_functionality_in_php7

Các vấn đề liên quan