Nếu "mức hiển thị" cho hàm __destruct()
là công khai hay cái gì khác? Tôi đang cố viết một tài liệu chuẩn cho nhóm của tôi và câu hỏi này xuất hiện.Khả năng hiển thị __destruct cho PHP
19
A
Trả lời
23
Trong Addition Mark Biek của câu trả lời:
Các __destruct() chức năng phải được khai báo công cộng. Nếu không, chức năng sẽ không được thực hiện khi tắt kịch bản lệnh:
Warning: Call to protected MyChild1::__destruct() from context '' during shutdown ignored in Unknown on line 0
Warning: Call to private MyChild2::__destruct() from context '' during shutdown ignored in Unknown on line 0
Điều này có thể không gây hại, mà không bị ô uế.
Nhưng điều quan trọng nhất về điều này: Nếu destructor được khai báo là private hoặc protected, bộ thực thi sẽ ném một lỗi nghiêm trọng trong thời điểm này thu gom rác cố gắng đối tượng miễn phí:
<?php
class MyParent
{
private function __destruct()
{
echo 'Parent::__destruct';
}
}
class MyChild extends MyParent
{
private function __destruct()
{
echo 'Child::__destruct';
parent::__destruct();
}
}
$myChild = new MyChild();
$myChild = null;
$myChild = new MyChild();
?>
đầu ra
Fatal error: Call to private MyChild::__destruct() from context '' in D:\www\scratchbook\destruct.php on line 20
(Cảm ơn Mark Biek vì một ví dụ tuyệt vời!)
8
Tôi nghĩ rằng nó cần phải được công khai trong trường hợp một lớp con cần gọi rõ ràng phương thức __destruct của lớp cha.
Something như thế này sẽ ném ra một lỗi:
<?php
class MyParent
{
private function __destruct()
{
echo 'Parent::__destruct';
}
}
class MyChild extends MyParent
{
function __destruct()
{
echo 'Child::__destruct';
parent::__destruct();
}
}
$myChild = new MyChild();
?>
Các vấn đề liên quan
- 1. khả năng hiển thị: hiển thị/ẩn div
- 2. Java: Khả năng hiển thị subpackage?
- 3. Hướng dẫn khả năng hiển thị cho iOS
- 4. Cách sử dụng Khả năng hiển thị iOS
- 5. Khả năng hiển thị biểu tượng và không gian tên
- 6. Khả năng hiển thị của Apple mà không cần ARC
- 7. Hỗ trợMapFragment - khả năng hiển thị phân mảnh bản đồ
- 8. Sự cố về khả năng hiển thị trên iPhone: networkStatusForFlags
- 9. Kiểm tra khả năng hiển thị của một phần tử
- 10. Khả năng hiển thị bộ nhớ trong Fork-join
- 11. khóa vùng chứa và khả năng hiển thị miễn phí
- 12. IE10: 'khả năng hiển thị: hiển thị' trên trước phần tử giả của phần tử 'hiển thị: ẩn'
- 13. Phương thức thay đổi PHP/chức năng hiển thị
- 14. Có tương đương với khả năng hiển thị mặt sau cho ba.js không?
- 15. getHeight cho Chế độ xem có khả năng hiển thị = đi
- 16. Khả năng hiển thị tiêu chuẩn cho các phương pháp trừu tượng
- 17. Chế độ xem Android: có thể kiểm tra khả năng hiển thị trước khi thiết lập khả năng hiển thị cải thiện hiệu suất?
- 18. Coldfusion/PHP Khả năng tương thích
- 19. Tôi có nên sử dụng unset trong php __destruct() không?
- 20. Khả năng hiển thị mờ dần của phần tử bằng cách sử dụng jQuery
- 21. Khả năng hiển thị ràng buộc trong XAML với thuộc tính Visibility
- 22. kiểm tra khả năng hiển thị đối với một trang cụ thể trong URL
- 23. PHP không hiển thị lỗi
- 24. gây nhầm lẫn về khả năng hiển thị biến thể của chuỗi java
- 25. Cách xác định thời gian chờ khả năng hiển thị trên ios
- 26. Làm thế nào để phát hiện sự thay đổi trong mạng với Khả năng hiển thị?
- 27. khả năng ủy quyền/đăng nhập đơn giản trong php
- 28. Giảm khả năng hiển thị khi triển khai giao diện trong Java
- 29. không thể phát hiện kết nối internet với Khả năng hiển thị reachabilityForInternetConnection
- 30. Tùy chỉnh UIView Không hiển thị khả năng truy cập trên Voice Over
Đó là một câu trả lời thú vị. +1 cho bạn :) –