Giống như một số đã trả lời trước đây. Toán tử
Notice: Undefined variable: this in %s on line %d NULL2 loại bỏ tất cả các lỗi trong PHP, bao gồm các thông báo, cảnh báo và thậm chí cả các lỗi nghiêm trọng
NHƯNG. Xin vui lòng, thực sự không sử dụng toán tử
Notice: Undefined variable: this in %s on line %d NULL2
Tại sao?
Chà, bởi vì khi bạn sử dụng toán tử ________ 22 để loại bỏ lỗi, bạn hoàn toàn không biết bắt đầu từ đâu khi xảy ra lỗi. Tôi đã có chút "thú vị" với mã kế thừa khi một số nhà phát triển sử dụng toán tử
Notice: Undefined variable: this in %s on line %d NULL2 khá thường xuyên. Đặc biệt trong các trường hợp như thao tác tệp, cuộc gọi mạng, v.v. Đó là tất cả các trường hợp mà nhiều nhà phát triển khuyến nghị sử dụng toán tử
Notice: Undefined variable: this in %s on line %d NULL2 vì điều này đôi khi nằm ngoài phạm vi khi xảy ra lỗi ở đây [ví dụ: API của bên thứ ba có thể không truy cập được, v.v. ]
Nhưng điểm để vẫn không sử dụng nó là gì?
Là một nhà phát triển. Khi sử dụng
Notice: Undefined variable: this in %s on line %d NULL2, tôi hoàn toàn không biết bắt đầu từ đâu. Nếu có hàng trăm hoặc thậm chí hàng nghìn lời gọi hàm với
Notice: Undefined variable: this in %s on line %d NULL2 thì lỗi có thể xảy ra ở mọi nơi. Không thể gỡ lỗi hợp lý trong trường hợp này. Và ngay cả khi đó chỉ là lỗi của bên thứ 3 - thì nó vẫn ổn và bạn đã hoàn thành nhanh chóng. ;-] Hơn nữa, tốt hơn là thêm đủ chi tiết vào nhật ký lỗi, để nhà phát triển có thể dễ dàng quyết định xem mục nhập nhật ký có phải là thứ cần phải kiểm tra thêm hay đó chỉ là lỗi của bên thứ 3 nằm ngoài phạm vi của nhà phát triển
Là người dùng. Người dùng hoàn toàn không quan tâm lý do xảy ra lỗi là gì hay không. Phần mềm ở đó để họ làm việc, để hoàn thành một nhiệm vụ cụ thể, v.v. Họ không quan tâm đó là lỗi của nhà phát triển hay sự cố của bên thứ 3. Đặc biệt đối với người dùng, tôi thực sự khuyên bạn nên ghi lại tất cả các lỗi, ngay cả khi chúng nằm ngoài phạm vi. Có thể bạn sẽ nhận thấy rằng một API cụ thể thường xuyên ngoại tuyến. Bạn có thể làm gì?
Nói ngắn gọn. Bạn nên biết rằng tồn tại thứ gì đó như
Notice: Undefined variable: this in %s on line %d NULL2 [kiến thức luôn tốt], nhưng đừng sử dụng nó. Nhiều nhà phát triển [đặc biệt là những mã gỡ lỗi từ người khác] sẽ rất biết ơn
Các hàm ẩn danh, còn được gọi là
Notice: Undefined variable: this in %s on line %d NULL0, cho phép tạo các hàm không có tên cụ thể. Chúng hữu ích nhất với vai trò là giá trị của các tham số có thể gọi được, nhưng chúng cũng có nhiều cách sử dụng khác
Các hàm ẩn danh được triển khai bằng lớp Đóng
Ví dụ #1 Ví dụ về hàm ẩn danh
Notice: Undefined variable: this in %s on line %d NULL1
Bao đóng cũng có thể được sử dụng làm giá trị của biến; . Gán một bao đóng cho một biến sử dụng cú pháp giống như bất kỳ phép gán nào khác, kể cả dấu chấm phẩy ở cuối
Ví dụ #2 Ví dụ gán biến hàm ẩn danh
Notice: Undefined variable: this in %s on line %d NULL2
Notice: Undefined variable: this in %s on line %d NULL3
Các bao đóng cũng có thể kế thừa các biến từ phạm vi cha. Bất kỳ biến nào như vậy phải được chuyển đến cấu trúc ngôn ngữ
Notice: Undefined variable: this in %s on line %d NULL4. Kể từ PHP 7. 1, các biến này không được bao gồm siêu toàn cục, $this hoặc biến có cùng tên với tham số. Một khai báo kiểu trả về của hàm phải được đặt sau mệnh đề
Notice: Undefined variable: this in %s on line %d NULL4
Ví dụ #3 Kế thừa các biến từ phạm vi cha
Notice: Undefined variable: this in %s on line %d NULL6
Notice: Undefined variable: this in %s on line %d NULL0
Notice: Undefined variable: this in %s on line %d NULL1
Notice: Undefined variable: this in %s on line %d NULL2
Notice: Undefined variable: this in %s on line %d NULL3
Notice: Undefined variable: this in %s on line %d NULL4
Notice: Undefined variable: this in %s on line %d NULL5
Notice: Undefined variable: this in %s on line %d NULL6
Notice: Undefined variable: this in %s on line %d NULL7
Ví dụ trên sẽ xuất ra một cái gì đó tương tự như
________số 8
Kể từ PHP 8. 0. 0, danh sách các biến được kế thừa theo phạm vi có thể bao gồm dấu phẩy ở cuối, dấu phẩy này sẽ bị bỏ qua
Kế thừa các biến từ phạm vi cha mẹ không giống như sử dụng các biến toàn cục. Các biến toàn cục tồn tại trong phạm vi toàn cầu, giống nhau cho dù chức năng nào đang thực thi. Phạm vi cha của một bao đóng là hàm trong đó bao đóng được khai báo [không nhất thiết phải là hàm được gọi từ đó]. Xem ví dụ sau
Ví dụ #4 Đóng cửa và phạm vi
Notice: Undefined variable: this in %s on line %d NULL8
Notice: Undefined variable: this in %s on line %d NULL9
Notice: Undefined variable: this in %s on line %d NULL10
Notice: Undefined variable: this in %s on line %d NULL11
Notice: Undefined variable: this in %s on line %d NULL12
Notice: Undefined variable: this in %s on line %d NULL13
Notice: Undefined variable: this in %s on line %d NULL14
Notice: Undefined variable: this in %s on line %d NULL15
Notice: Undefined variable: this in %s on line %d NULL16
Notice: Undefined variable: this in %s on line %d NULL17
Ví dụ #5 Liên kết tự động của
Notice: Undefined variable: this in %s on line %d NULL18
Notice: Undefined variable: this in %s on line %d NULL19
Notice: Undefined variable: this in %s on line %d NULL00
Notice: Undefined variable: this in %s on line %d NULL01
Ví dụ trên sẽ xuất ra
Khi được khai báo trong ngữ cảnh của một lớp, lớp hiện tại sẽ tự động được liên kết với nó, làm cho
Notice: Undefined variable: this in %s on line %d NULL18 có sẵn bên trong phạm vi của hàm. Nếu không muốn liên kết tự động này của lớp hiện tại, thì có thể được sử dụng thay thế
Hàm ẩn danh tĩnh
Hàm ẩn danh có thể được khai báo tĩnh. Điều này ngăn họ tự động liên kết lớp hiện tại với họ. Các đối tượng cũng có thể không bị ràng buộc với chúng khi chạy