Chỉ cần tự hỏi là tốt nhất để định nghĩa một hàm tạo rỗng hoặc để định nghĩa hàm tạo ra hoàn toàn trong PHP? Tôi có thói quen xác định các nhà thầu chỉ với return true;
, ngay cả khi tôi không cần người xây dựng để làm bất cứ điều gì - chỉ vì lý do hoàn thành.PHP constructor rỗng
Trả lời
Nếu bạn không cần một nhà xây dựng, tốt nhất là bỏ nó ra, không cần phải viết thêm mã. Khi bạn viết nó, hãy để trống ... trả lại đúng không có mục đích.
hàm tạo luôn trả về cá thể của lớp trong đó được xác định. Do đó bạn không bao giờ sử dụng "return" bên trong constructor. Cuối cùng thì tốt hơn là không định nghĩa nó nếu bạn không dùng nó.
Bạn chỉ nên xác định hàm khởi tạo trống nếu đối tượng của bạn không bao giờ được khởi tạo. Nếu đúng như vậy, hãy đặt __construct()
riêng tư.
EDIT:
câu trả lời trước là không còn giá trị, kể từ PHP tại hoạt động như ngôn ngữ lập trình oop khác. Các nhà thầu không phải là một phần của giao diện. Vì vậy bây giờ bạn được phép ghi đè lên chúng làm thế nào bạn thích mà không cần bất kỳ vấn đề nào
ngoại lệ duy nhất cho điều này là:
interface iTest
{
function __construct(A $a, B $b, Array $c);
}
class Test implements iTest
{
function __construct(A $a, B $b, Array $c){}
// in this case the constructor must be compatible with the one specified in the interface
// this is something that php allows but that should never be used
// in fact as i stated earlier, constructors must not be part of interfaces
}
TRƯỚC OLD KHÔNG-HỢP LỆ-NỮA ĐÁP:
có là sự khác biệt quan trọng giữa một hàm tạo trống và không có hàm tạo nào tại tất cả
class A{}
class B extends A{
function __construct(ArrayObject $a, DOMDocument $b){}
}
VS
class A{
function __construct(){}
}
class B extends A{
function __construct(ArrayObject $a, DOMDocument $b){}
}
// error B::__construct should be compatible with A constructor
Không chỉ vậy, nhưng nếu 'A' có một hàm tạo đã định nghĩa và' B' có một hàm tạo, rỗng, đã định nghĩa, thì về cơ bản bạn sẽ loại bỏ hàm tạo, nhưng nếu bạn bỏ nó ra thì bạn sẽ kế thừa constructor. Các upshot là bạn không nên "luôn luôn" hoặc "không bao giờ" bao gồm một nhà xây dựng có sản phẩm nào, và nó không "luôn luôn" có nghĩa là cùng một điều khi bạn làm một hay khác. Đó là tất cả về ngữ cảnh. – Jason
Có sự khác biệt giữa hai: Nếu bạn viết một hàm trống rỗng __construct()
, bạn ghi đè bất kỳ thừa kế nào __construct()
từ lớp cha.
Vì vậy, nếu bạn không cần nó và bạn không muốn ghi đè lên hàm tạo mẹ một cách rõ ràng, đừng viết nó.
- 1. PHP $ _SERVER ['REMOTE_ADDR'] rỗng
- 2. PHP constructor với tham số
- 3. Không constructor rỗng khi tạo ra một dịch vụ
- 4. Danh sách khởi tạo Constructor với khởi tạo rỗng
- 5. BroadcastReceiver: không thể khởi tạo lớp; không có constructor rỗng
- 6. ảo baseclass gọi constructor rỗng trong C++ (C++ 11)
- 7. php là rỗng hoặc trống?
- 8. PHP constructor để trả về một NULL
- 9. biến Rỗng xác định trong php
- 10. Trong php, 0 được coi là rỗng?
- 11. Phạm vi ươm trong constructor của lớp cha PHP
- 12. biến khởi tạo bên ngoài của PHP constructor
- 13. Cơ sở dữ liệu rỗng trong MySQL và PHP?
- 14. file_get_contents với tập tin rỗng không hoạt động PHP
- 15. tôi có nên sử dụng hàm rỗng() php
- 16. HTML5 Validation - PHP Mẫu Action Thuộc tính Rỗng
- 17. Thay thế chuỗi rỗng bằng null trong mảng php
- 18. php Tạo đối tượng mặc định từ giá trị rỗng?
- 19. PHP cURL - sản lượng rỗng không có lỗi
- 20. Nhận zip bị hỏng hoặc rỗng bằng ZipArchive php
- 21. MySQL và PHP - chèn NULL thay vì chuỗi rỗng
- 22. C# Instance Constructor vs Static Constructor
- 23. Java 7 Constructor
- 24. Chuỗi rỗng trong cột không rỗng trong MySQL?
- 25. F # Constructor
- 26. Ẩn constructor
- 27. $ _SERVER ['PHP_AUTH_USER'] trống rỗng
- 28. PHP loại bỏ rỗng, null Mảng/giá trị mảng trong khi vẫn giữ khóa/giá trị không rỗng/null
- 29. .Trim() khi chuỗi rỗng hoặc rỗng
- 30. rỗng vs chuỗi rỗng trong Oracle
Giá trị trả lại của hàm khởi tạo bị bỏ qua hoàn toàn. – KingCrunch
thực sự nếu tôi tìm thấy ai đó quay trở lại bên trong nhà xây dựng ở vị trí đầu tiên, tôi sẽ không bao giờ hợp nhất mã của anh ta với tôi. –