Php không tồn tại

file_get_contents[] là cách ưu tiên để đọc nội dung của tệp thành chuỗi. Nó sẽ sử dụng các kỹ thuật lập bản đồ bộ nhớ nếu được hệ điều hành của bạn hỗ trợ để nâng cao hiệu suất

Ghi chú

Nếu bạn đang mở một URI có ký tự đặc biệt, chẳng hạn như dấu cách, bạn cần mã hóa URI bằng urlencode[]

Thông số

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
5

Tên file cần đọc

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
60

Ghi chú

Hằng số

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
61 có thể được sử dụng để kích hoạt tìm kiếm. Điều này là không thể nếu được bật, vì
$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
61 là một int. Sử dụng
$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
63 để thay thế

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
64

Tài nguyên ngữ cảnh hợp lệ được tạo bằng stream_context_create[]. Nếu bạn không cần sử dụng ngữ cảnh tùy chỉnh, bạn có thể bỏ qua tham số này trước

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
1

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
66

Phần bù nơi bắt đầu đọc trên luồng ban đầu. Độ lệch âm được tính từ cuối luồng

Tìm kiếm [

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
66] không được hỗ trợ với các tệp từ xa. Cố gắng tìm kiếm trên các tệp không cục bộ có thể hoạt động với độ lệch nhỏ, nhưng điều này không thể đoán trước được vì nó hoạt động trên luồng được đệm

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
68

Độ dài tối đa của dữ liệu đọc. Mặc định là đọc cho đến khi kết thúc tệp. Lưu ý rằng tham số này được áp dụng cho luồng do bộ lọc xử lý

Giá trị trả về

Hàm trả về dữ liệu đã đọc hoặc

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
5 khi lỗi

Cảnh báo

Hàm này có thể trả về giá trị Boolean

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
5, nhưng cũng có thể trả về giá trị không phải Boolean có giá trị là
$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
5. Vui lòng đọc phần về Booleans để biết thêm thông tin. Sử dụng toán tử === để kiểm tra giá trị trả về của hàm này

Lỗi/Ngoại lệ

Lỗi cấp độ

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
82 được tạo nếu không thể tìm thấy
$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
5,
$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
68 nhỏ hơn 0 hoặc nếu tìm kiếm
$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
66 được chỉ định trong luồng không thành công

Khi file_get_contents[] được gọi trên một thư mục, lỗi cấp độ

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
82 được tạo trên Windows và kể từ PHP 7. 4 trên các hệ điều hành khác

Nhật ký thay đổi

Phiên bảnMô tả8. 0. 0____868 hiện không có giá trị. 7. 1. 0Hỗ trợ cho
$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
66 âm tính đã được thêm vào

ví dụ

Ví dụ #1 Lấy và xuất mã nguồn của trang chủ của một trang web

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
89

Ví dụ #2 Tìm kiếm trong include_path

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
50

Ví dụ #3 Đọc một phần của tệp

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
51

Ví dụ trên sẽ xuất ra một cái gì đó tương tự như

string[14] "lle Bjori Ro" 

Ví dụ #4 Sử dụng bối cảnh luồng

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
52

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
53

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
54

ghi chú

Ghi chú. Hàm này an toàn nhị phân

Mẹo

Một URL có thể được sử dụng làm tên tệp với chức năng này nếu chức năng này đã được bật. Xem fopen[] để biết thêm chi tiết về cách chỉ định tên tệp. Xem Giao thức và Trình bao bọc được hỗ trợ để biết các liên kết đến thông tin về khả năng của các trình bao bọc khác nhau, ghi chú về cách sử dụng và thông tin về bất kỳ biến được xác định trước nào mà chúng có thể cung cấp

Cảnh báo

Khi sử dụng SSL, Microsoft IIS sẽ vi phạm giao thức bằng cách đóng kết nối mà không gửi chỉ báo

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
55. PHP sẽ báo cáo điều này là "SSL. Fatal Protocol Error" khi bạn xem hết dữ liệu. Để giải quyết vấn đề này, giá trị của phải được hạ xuống mức không bao gồm cảnh báo. PHP có thể phát hiện phần mềm máy chủ IIS có lỗi khi bạn mở luồng bằng trình bao bọc
$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
56 và sẽ chặn cảnh báo. Khi sử dụng fsockopen[] để tạo ổ cắm
$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
57, nhà phát triển chịu trách nhiệm phát hiện và loại bỏ cảnh báo này

Các định nghĩa lớp cơ bản bắt đầu bằng từ khóa

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
14, theo sau là tên lớp, tiếp theo là một cặp dấu ngoặc nhọn bao quanh các định nghĩa về thuộc tính và phương thức thuộc về lớp

Tên lớp có thể là bất kỳ nhãn hợp lệ nào, miễn là nó không phải là từ dành riêng cho PHP. Tên lớp hợp lệ bắt đầu bằng một chữ cái hoặc dấu gạch dưới, theo sau là bất kỳ số lượng chữ cái, số hoặc dấu gạch dưới nào. Là một biểu thức chính quy, nó sẽ được thể hiện như vậy.

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
0

Một lớp có thể chứa các hằng, biến [được gọi là "thuộc tính"] và hàm [được gọi là "phương thức"] của riêng nó

Ví dụ #1 Định nghĩa lớp đơn giản

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
1

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
2

Biến giả $this khả dụng khi một phương thức được gọi từ bên trong ngữ cảnh đối tượng. $đây là giá trị của đối tượng gọi

Cảnh báo

Gọi một phương thức không tĩnh sẽ gây ra Lỗi tĩnh. Trước PHP 8. 0. 0, điều này sẽ tạo ra một thông báo không dùng nữa và $this sẽ không được xác định

Ví dụ #2 Một số ví dụ về biến giả $this

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
3

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
4

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
5

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
6

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
7

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
8

Đầu ra của ví dụ trên trong PHP 7

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
0

Đầu ra của ví dụ trên trong PHP 8

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27

lớp chỉ đọc

Kể từ PHP 8. 2. 0, một lớp có thể được đánh dấu bằng công cụ sửa đổi chỉ đọc. Đánh dấu một lớp là chỉ đọc sẽ thêm thuộc tính vào mọi thuộc tính được khai báo và ngăn việc tạo. Hơn nữa, không thể thêm hỗ trợ cho chúng bằng cách sử dụng thuộc tính AllowDynamicProperties. Cố gắng làm như vậy sẽ gây ra lỗi thời gian biên dịch

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
9

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
30

Vì không thể đánh dấu thuộc tính untyped, cũng như tĩnh bằng công cụ sửa đổi

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
31, nên các lớp chỉ đọc cũng không thể khai báo chúng

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
32

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
33

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
34

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
35

Lớp chỉ đọc có thể là nếu và chỉ khi lớp con cũng là lớp chỉ đọc

Mới

Để tạo một thể hiện của một lớp, phải sử dụng từ khóa

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
36. Một đối tượng sẽ luôn được tạo trừ khi đối tượng đó có một hàm tạo được xác định sẽ đưa ra một ngoại lệ do lỗi. Các lớp nên được xác định trước khi khởi tạo [và trong một số trường hợp, đây là một yêu cầu]

Nếu một chuỗi chứa tên của một lớp được sử dụng với

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
36, một phiên bản mới của lớp đó sẽ được tạo. Nếu lớp nằm trong một không gian tên, tên đầy đủ của nó phải được sử dụng khi thực hiện việc này

Ghi chú

Nếu không có đối số nào được chuyển đến hàm tạo của lớp, dấu ngoặc đơn sau tên lớp có thể được bỏ qua

Ví dụ #3 Tạo một thể hiện

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
38

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
39

Kể từ PHP 8. 0. 0, sử dụng

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
36 với các biểu thức tùy ý được hỗ trợ. Điều này cho phép khởi tạo phức tạp hơn nếu biểu thức tạo ra một chuỗi. Các biểu thức phải được bao bọc trong dấu ngoặc đơn

Ví dụ #4 Tạo một thể hiện bằng một biểu thức tùy ý

Trong ví dụ đã cho, chúng tôi hiển thị nhiều ví dụ về biểu thức tùy ý hợp lệ tạo ra tên lớp. Phần này hiển thị lời gọi hàm, nối chuỗi và hằng số

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
41

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
42

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
43

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
44

Đầu ra của ví dụ trên trong PHP 8

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
3

Trong ngữ cảnh lớp, có thể tạo một đối tượng mới bằng

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
45 và
$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
46

Khi gán một thể hiện đã được tạo của một lớp cho một biến mới, biến mới sẽ truy cập vào thể hiện giống như đối tượng đã được gán. Hành vi này giống nhau khi chuyển các thể hiện cho một hàm. Một bản sao của một đối tượng đã được tạo có thể được tạo bằng cách sao chép nó

Ví dụ #5 Gán đối tượng

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
38

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
48

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
49

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
40

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
41

Ví dụ trên sẽ xuất ra

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
4

Có thể tạo các thể hiện của một đối tượng theo một số cách

Ví dụ #6 Tạo đối tượng mới

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
42

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
43

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
44

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
45

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
46

Ví dụ trên sẽ xuất ra

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
4

Có thể truy cập một thành viên của một đối tượng mới được tạo trong một biểu thức

Ví dụ #7 Truy cập thành viên của đối tượng mới tạo

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
47

Ví dụ trên sẽ xuất ra một cái gì đó tương tự như

Ghi chú. Trước PHP 7. 1, các đối số không được ước tính nếu không có hàm tạo nào được xác định

Thuộc tính và phương thức

Các thuộc tính và phương thức của lớp nằm trong các "không gian tên" riêng biệt, vì vậy có thể có một thuộc tính và một phương thức có cùng tên. Việc đề cập đến cả một thuộc tính và một phương thức có cùng một ký hiệu và liệu một thuộc tính sẽ được truy cập hay một phương thức sẽ được gọi, chỉ phụ thuộc vào ngữ cảnh. e. việc sử dụng là truy cập biến hay gọi hàm

Ví dụ #8 Quyền truy cập tài sản so với. gọi phương thức

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
48

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
49

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
60

Ví dụ trên sẽ xuất ra

Điều đó có nghĩa là không thể trực tiếp gọi một chức năng ẩn danh đã được gán cho một thuộc tính. Thay vào đó, thuộc tính phải được gán cho một biến trước, chẳng hạn. Có thể gọi trực tiếp một thuộc tính như vậy bằng cách đặt nó trong dấu ngoặc đơn

Ví dụ #9 Gọi một hàm ẩn danh được lưu trữ trong một thuộc tính

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
61

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
62

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
63

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
64

Ví dụ trên sẽ xuất ra

mở rộng

Một lớp có thể kế thừa các hằng, phương thức và thuộc tính của lớp khác bằng cách sử dụng từ khóa

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
65 trong khai báo lớp. Không thể mở rộng nhiều lớp;

Các hằng, phương thức và thuộc tính kế thừa có thể được ghi đè bằng cách khai báo lại chúng với cùng tên được định nghĩa trong lớp cha. Tuy nhiên, nếu lớp cha đã định nghĩa một phương thức hoặc hằng số là cuối cùng, thì chúng có thể không bị ghi đè. Có thể truy cập các phương thức bị ghi đè hoặc thuộc tính tĩnh bằng cách tham chiếu chúng với cha

Ghi chú. Kể từ PHP 8. 1. 0, hằng số có thể được khai báo là cuối cùng

Ví dụ #10 Kế thừa lớp đơn giản

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
66

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
67

Ví dụ trên sẽ xuất ra

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
6

Quy tắc tương thích chữ ký

Khi ghi đè một phương thức, chữ ký của nó phải tương thích với phương thức cha. Mặt khác, một lỗi nghiêm trọng được phát ra hoặc trước PHP 8. 0. 0, một lỗi cấp độ

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
68 được tạo ra. Chữ ký tương thích nếu nó tôn trọng các quy tắc phương sai, làm cho tham số bắt buộc trở thành tùy chọn và nếu có bất kỳ tham số mới nào là tùy chọn. Điều này được gọi là Nguyên tắc thay thế Liskov, viết tắt là LSP. Các phương thức , và
$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
69 được miễn trừ khỏi các quy tắc tương thích chữ ký này và do đó sẽ không gây ra lỗi nghiêm trọng trong trường hợp chữ ký không khớp

Ví dụ #11 Các phương thức con tương thích

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
70

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
71

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
72

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
73

Ví dụ trên sẽ xuất ra

Các ví dụ sau đây chứng minh rằng một phương thức con loại bỏ một tham số hoặc bắt buộc một tham số tùy chọn không tương thích với phương thức cha

Ví dụ #12 Lỗi nghiêm trọng khi một phương thức con loại bỏ một tham số

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
74

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
75

Đầu ra của ví dụ trên trong PHP 8 tương tự như

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
7

Ví dụ #13 Lỗi nghiêm trọng khi một phương thức con bắt buộc tham số tùy chọn

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
74

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
77

Đầu ra của ví dụ trên trong PHP 8 tương tự như

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
6

Cảnh báo

Đổi tên tham số của phương thức trong lớp con không phải là sự không tương thích về chữ ký. Tuy nhiên, điều này không được khuyến khích vì nó sẽ dẫn đến Lỗi thời gian chạy nếu được sử dụng

Ví dụ #14 Lỗi khi sử dụng các tham số và đối số được đặt tên đã được đổi tên trong một lớp con

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
78

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
79

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
60

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
61

Ví dụ trên sẽ xuất ra một cái gì đó tương tự như

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
1

lớp

Từ khóa

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
14 cũng được sử dụng để phân giải tên lớp. Để có được tên đủ điều kiện của một lớp
$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
63, hãy sử dụng
$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
64. Điều này đặc biệt hữu ích với các lớp được đặt tên

Ví dụ #15 Độ phân giải tên lớp

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
65

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
66

Ví dụ trên sẽ xuất ra

Ghi chú

Độ phân giải tên lớp bằng cách sử dụng

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
41 là một phép biến đổi thời gian biên dịch. Điều đó có nghĩa là tại thời điểm chuỗi tên lớp được tạo, chưa có quá trình tự động tải nào xảy ra. Kết quả là, tên lớp được mở rộng ngay cả khi lớp không tồn tại. Không có lỗi được đưa ra trong trường hợp đó

Ví dụ #16 Thiếu độ phân giải tên lớp

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
68

Ví dụ trên sẽ xuất ra

Kể từ PHP 8. 0. 0, hằng số

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
41 cũng có thể được sử dụng trên các đối tượng. Độ phân giải này xảy ra trong thời gian chạy, không phải thời gian biên dịch. Tác dụng của nó giống như gọi get_class[] trên đối tượng

Ví dụ #17 Độ phân giải tên đối tượng

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
10

Ví dụ trên sẽ xuất ra

Các phương thức và thuộc tính Nullsafe

Kể từ PHP 8. 0. 0, các thuộc tính và phương thức cũng có thể được truy cập bằng toán tử "nullsafe" thay thế.

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
11. Toán tử nullsafe hoạt động giống như truy cập thuộc tính hoặc phương thức như trên, ngoại trừ nếu đối tượng được hủy đăng ký là
$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
12 thì
$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
12 sẽ được trả về thay vì ném ngoại lệ. Nếu dereference là một phần của chuỗi, phần còn lại của chuỗi sẽ bị bỏ qua

Hiệu ứng này tương tự như gói từng quyền truy cập trong kiểm tra is_null[] trước, nhưng nhỏ gọn hơn

Ví dụ #18 Toán tử Nullsafe

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
14

$this is defined [A]

Fatal error: Uncaught Error: Non-static method A::foo[] cannot be called statically in %s :27
Stack trace:
#0 {main}
  thrown in %s  on line 27
15

Ghi chú

Toán tử nullsafe được sử dụng tốt nhất khi null được coi là giá trị hợp lệ và có thể được mong đợi cho thuộc tính hoặc phương thức trả về. Để chỉ ra lỗi, tốt hơn là ném ngoại lệ

Chủ Đề