2010-10-06 27 views
49

thể trùng lặp:
PHP class instantiation. To use or not to use the parentheses?Khởi tạo một lớp có hoặc không có dấu ngoặc đơn?

tôi đã không tìm thấy bất kỳ tài liệu chính thức về vấn đề này. Nhưng nó không quan trọng cho dù một lớp được khởi tạo với của chúng tôi mà không có dấu ngoặc đơn - miễn là không có tham số liên quan, phải không?

$car = new Car; 

hoặc

$car = new Car(); 

Nhưng bất cứ ai có thể cho tôi biết nếu có một sự khác biệt trong hiệu suất? Cách nào là cách 'chính xác hơn'? Có tài liệu chính thức nào cho việc này không?

Trả lời

83

Bất kỳ sự khác biệt nào về hiệu suất sẽ hoàn toàn không đáng kể.

Trong khi cả hai cách đều ổn, cá nhân tôi sẽ thích sử dụng new Car(); vì thường, một phương pháp được gọi ở đây, và chức năng/phương pháp gọi trong PHP đòi hỏi (). Ngoài ra, nó phù hợp hơn với các instantiations có các tham số.

Nhưng cuối cùng, nó không phù hợp. Nó không quan trọng theo cách bạn chọn, nhưng khi bạn chọn một, dính vào nó một cách nhất quán!

+2

Chính xác những gì tôi sắp viết, +1. – tplaner

+2

+1 và đã xóa của tôi - Tôi đồng ý 100%. – lonesomeday

+7

+1 Thành thật mà nói, tôi không xem xét 'ClassUsingDefaultConstructor;' và 'new ClassWithConstructorWithParameters ($ foo, $ bar);' được sử dụng trong cùng một tập lệnh để nhất quán * bất kể là gì *. Nhưng đó chỉ là tôi, tôi đoán vậy. – BoltClock

3

Cả hai cách đều chính xác và tôi chắc chắn không có bất kỳ sự khác biệt nào về hiệu suất.

6

việc khởi tạo đầu tiên không có tham chiếu "chính thức". Trong tài liệu php chính thức, bạn sẽ tìm thấy tài liệu thứ hai. Vì vậy, tôi đang prefere này cho consistenscy. Nhưng đó là tất cả sự lựa chọn của bạn

+6

Trong giao diện nhanh, tôi đã tìm thấy một số lượng lớn các ví dụ tài liệu sử dụng dạng không được tạo dấu ngoặc đơn, bao gồm nhiều đối tượng trong "Lớp và đối tượng" phần. – GZipp

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