Khái niệm OOP trong PHP
PHP giới thiệu các tính năng lập trình hướng đối tượng từ phiên bản 5. 0. Lập trình hướng đối tượng là một trong những mô hình lập trình phổ biến nhất dựa trên khái niệm về đối tượng và lớp. Show PHP OOP cho phép bạn cấu trúc một ứng dụng phức tạp thành một cấu trúc đơn giản hơn và dễ bảo trì hơn Tôi cho rằng bạn đã quen thuộc với các khái niệm và thuật ngữ Lập trình hướng đối tượng (OOP). Nếu không, hãy đọc "Java OOP" hoặc "C++ OOP" Bắt đầu bằng ví dụHãy bắt đầu với các ví dụ trên
Thí dụ. Lớp MyCircleChúng ta sẽ bắt đầu với một lớp có tên là 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 235, mô hình một đường tròn có bán kính cụ thể, như thể hiện trong sơ đồ lớp sau MyCircle. phpĐịnh nghĩa của lớp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 235 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 MyCircleTest. phpLái thử cho hạng 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 235 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Bạn có thể chạy chương trình thông qua PHP CLI (Giao diện dòng lệnh) $ php MyCircleTest.php Các kết quả đầu ra dự kiến là Thí dụ. Lớp MyTimeLớp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238 mô hình hóa một thể hiện thời gian của giờ, phút và giây, như thể hiện trong sơ đồ lớp sau Thời gian của tôi. phpĐịnh nghĩa lớp cho lớp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238________số 8 MyTimeTest. phpLái thử cho hạng 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 238 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 230 đầu ra là Cách hoạt động của OOP trong OOPXác định một lớpMột lớp bao gồm các biến thành viên và hàm. Để xác định một lớp, sử dụng từ khóa $ php MyCircleTest.php1, như sau 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 232 Hàm tạo __construct()Constructor là một hàm đặc biệt có tên là $ php MyCircleTest.php2. Trình xây dựng được sử dụng để xây dựng một thể hiện và khởi tạo các biến thể hiện. Để xây dựng một thể hiện của một lớp, bạn cần gọi hàm tạo thông qua toán tử $ php MyCircleTest.php3 (như minh họa trong trình điều khiển thử nghiệm). Hàm tạo không trả về bất cứ thứ gì, do đó, sẽ không có câu lệnh $ php MyCircleTest.php4 bên trong hàm tạo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 236 PHP KHÔNG hỗ trợ nạp chồng hàm (không giống như C++ và Java). Nói cách khác, chỉ có một phiên bản của hàm tạo. Tuy nhiên, trong PHP, bạn có thể cung cấp giá trị mặc định cho các tham số của hàm, bao gồm cả hàm tạo. Theo cách này, hàm tạo có thể được gọi với các đối số khác nhau. Ví dụ, PHP không cung cấp hàm tạo mặc định không có đối số (không có đối số) (không giống như Java). Bạn cần xác định rõ ràng hàm tạo, nếu được yêu cầu Hàm hủy __destroy()Tương tự, bạn có thể định nghĩa hàm hủy có tên là $ php MyCircleTest.php5 cho một lớp. Hàm hủy sẽ không mang bất kỳ tham số nào. Nó sẽ được chạy trước khi phiên bản bị hủy (hoặc bị hủy bỏ). Hàm hủy không được sử dụng phổ biến Từ kết quả của các ví dụ trên, có thể thấy rằng hàm hủy được gọi trên tất cả các đối tượng khi đến cuối tệp, trước khi chương trình thoát. Để kích hoạt hàm hủy một cách rõ ràng, bạn có thể gọi $ php MyCircleTest.php6 trên một đối tượng. Ví dụ, Cấp phát một thực thể - Toán tử mớiĐể cấp phát một thể hiện của một lớp, hãy sử dụng toán tử $ php MyCircleTest.php3 để gọi một hàm tạo, ở dạng $ php MyCircleTest.php8 Truy cập Thành viên - Thành viên của Nhà điều hành (->)Để truy cập các biến/hàm thành viên, hãy sử dụng toán tử thành viên ( $ php MyCircleTest.php9), ở dạng 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 1170. Ví dụ, $này1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 1171 đề cập đến trường hợp hiện tại. Để tham chiếu một biến/hàm thành viên TRONG định nghĩa lớp, bạn PHẢI đặt trước 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 1171, e. g. , 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 1173, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 1174. Hãy lưu ý rằng bạn không thể bỏ qua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 1171 (không giống như Java) Công cụ sửa đổi kiểm soát truy cập - công khai, riêng tư và được bảo vệChúng ta có thể sử dụng công cụ sửa đổi kiểm soát truy cập để hạn chế quyền truy cập vào một biến/hàm thành viên. PHP hỗ trợ các công cụ sửa đổi kiểm soát truy cập này cho các biến và hàm thành viên
Getters và SettersGetters là setters được sử dụng để truy cập và biến đổi các biến thành viên riêng tư, như trong các ví dụ trên Một thực tế PHP phổ biến là sử dụng cùng một chức năng cho getter kiêm setter, được phân biệt bởi đối số của nó. Ví dụ, __toString()1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 1176 là một trong những phương thức được gọi là ma thuật, sẽ trả về một chuỗi biểu diễn của phiên bản hiện tại. Nó được gọi ngầm khi đối tượng được coi là một chuỗi. Ví dụ, Hãy lưu ý rằng nếu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 1176 không được xác định, " 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 1178" sẽ gây ra lỗi thời gian chạy 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 1176 tương tự như 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2300 trong Java. Tuy nhiên, không giống như các lớp Java luôn kế thừa một 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2300 từ lớp cha gốc 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2302, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 1176 trong PHP phải được định nghĩa rõ ràng cho mỗi lớp __LỚP__1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2304 là một trong những hằng số ma thuật được gọi là trong PHP, giữ tên lớp trong chuỗi DocBlock (hoặc PhpDoc) Nhận xétCác nhận xét kèm theo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2305 được gọi là "DocBlock" hoặc "PhpDoc", có thể được trích xuất để tạo tài liệu (như JavaDoc). Bạn có thể sử dụng các đánh dấu như 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2306 và $ php MyCircleTest.php4 để nhắm mục tiêu các mô tả Xử lý ngoại lệ và thử bắt cuối cùngCác câu lệnh trong khối thử được thực hiện theo trình tự. Nếu một trong các câu lệnh đưa ra một ngoại lệ, các câu lệnh còn lại sẽ không được thực thi. Thay vào đó, việc thực thi chuyển sang khối catch. Nếu tất cả các câu lệnh trong khối try không đưa ra bất kỳ ngoại lệ nào, thì khối try sẽ hoàn thành và khối catch không được thực thi. Lưu ý rằng quá trình thực thi luôn tiếp tục sau khối try-catch, bất kể có ngoại lệ nào hay không Cấu trúc try-catch hỗ trợ xử lý lỗi/ngoại lệ một cách duyên dáng. Nếu không có try-catch, chương trình sẽ bị ngắt đột ngột khi gặp ngoại lệ. Cấu trúc try-catch cũng tách biệt logic chính và logic xử lý ngoại lệ, để cải thiện kỹ thuật phần mềm OOP hơntĩnhThành viên 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2308 (biến hoặc hàm) thuộc về lớp, không thuộc về thể hiện. Nói cách khác, tất cả các phiên bản chia sẻ cùng một bản sao của một thành viên tĩnh Ví dụ: hãy viết lại lớp MyCircle của chúng tôi để bao gồm một biến 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2308 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2320 để duy trì số vòng kết nối đã tạo, như thể hiện trong sơ đồ lớp sau. Lưu ý rằng các thành viên tĩnh được gạch chân trong ký hiệu UML MyCircleWithCount. php1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 233 MyCircleWithCountTest. php1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 234 Các kết quả đầu ra dự kiến là 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 235 Bạn có thể đếm mà không có 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2308 không? Hằng số - constMột biến thành viên không đổi được xác định bởi từ khóa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2322. Các hằng số luôn là 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2323 và 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2308, không thể sửa đổi nội dung của chúng. Không giống như các biến thông thường, các hằng số không bắt đầu bằng dấu $ ở đầu. Trong định nghĩa lớp, các hằng số có thể được tham chiếu qua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2325, giống như bất kỳ thành viên 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2308 nào. Bên ngoài định nghĩa lớp, chúng được tham chiếu qua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2327. Theo quy ước, sử dụng chữ hoa cho tên hằng, e. g. , 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2328, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2329 Phương pháp ma thuật và hằng sốCác phương thức ma thuật là các phương thức đặc biệt, bắt đầu bằng dấu gạch dưới kép, có thể được định nghĩa trong bất kỳ lớp nào và được thực thi thông qua chức năng PHP tích hợp. Ví dụ như,
[TODO] Ví dụ Hằng ma thuật ( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2323 và 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2308), được đặt tên bằng chữ hoa và bắt đầu và kết thúc bằng hai dấu gạch dưới (không có $ ở đầu), chứa các thuộc tính chỉ đọc đặc biệt. Ví dụ như,
[TODO] Ví dụ bản thân. , cha mẹ. và tĩnh1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2350, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2351 và 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2352 cho phép bạn truy cập các thành viên 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2308 và 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2322 ( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2323 và 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2308) TRONG định nghĩa lớp. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2350 đề cập đến lớp hiện tại, như được minh họa trong ví dụ trên. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2351 đề cập đến lớp cha và 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2352 đề cập đến lớp hiện tại nhưng có ràng buộc muộn - sẽ được thảo luận sau trong phần kế thừa Nhớ lại rằng bên ngoài định nghĩa lớp, bạn có thể truy cập thành viên 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2323 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2308 và 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2322 thông qua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2303 bản thân vs. $nàySử dụng 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 1171 để chỉ đối tượng hiện tại. Sử dụng 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2305 để chỉ lớp hiện tại. Nói cách khác, trong một định nghĩa lớp, sử dụng 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2306 để tham chiếu các thành viên không thuộc 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2308, sử dụng 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2308 cho các thành viên 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2308 Nhập gợi ý cho các tham số chức năngTrong định nghĩa hàm, bạn có thể khai báo LOẠI của tham số, chẳng hạn như 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2310, tên lớp hoặc giao diện hoặc 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2311. Tuy nhiên, gợi ý loại KHÔNG áp dụng cho các loại vô hướng, chẳng hạn như int hoặc string. Ví dụ, Di sảnThí dụ. Các lớp MyCircle và MyCylinderHãy minh họa kế thừa lớp cha-lớp con với ví dụ sau về lớp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 235 và lớp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2313 MyCircle. phpGiống như ví dụ trước Xi lanh của tôi. phpLớp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2313 kế thừa từ lớp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 235, với nhiều biến/hàm thành viên hơn 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 230 MyCylinderTest. phpLái thử cho hạng 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2313 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 231 Các kết quả đầu ra dự kiến là 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 232 Kế thừa hoạt động như thế nàomở rộngBạn có thể định nghĩa một lớp con kế thừa một lớp cha thông qua từ khóa ________ 017 bản thân và cha mẹTrong định nghĩa lớp con, bạn có thể sử dụng từ khóa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2318 ở dạng 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2319 để chỉ một thành viên của lớp cha; . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2322 được gọi là toán tử phân giải phạm vi Ghi đè phương thứcLớp con có thể ghi đè phương thức kế thừa từ lớp cha bằng cách cung cấp định nghĩa riêng của nó. Ví dụ, lớp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2313 có thể override phương thức 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2324 kế thừa từ lớp cha 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 235 như sau cuối cùngKhông thể ghi đè biến/phương thức 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2326 trong lớp con đa hìnhphương thức trừu tượng và lớp trừu tượngPhương thức 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2327 là phương thức chỉ có chữ ký, không có triển khai. Một lớp chứa một hoặc nhiều phương thức 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2327 là một lớp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2327. Một lớp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2327 không thể được khởi tạo, vì định nghĩa của nó không đầy đủ. Để sử dụng một lớp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2327, hãy lấy một lớp con và ghi đè các phương thức của 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2327. Lớp con hiện đã hoàn thành và có thể được khởi tạo Ví dụ, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 233 giao diệnMột giao diện là một lớp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2327 thuần túy, chỉ chứa các phương thức 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2327. Một giao diện được xác định bằng từ khóa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2335 (thay vì $ php MyCircleTest.php1). Để lấy một lớp con từ một giao diện, hãy sử dụng từ khóa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2337 (thay vì 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2317) Ví dụ như, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 234 Hãy lưu ý rằng việc triển khai lớp trừu tượng và giao diện của PHP hoàn toàn giống với Java đặc điểmNhìn thấy OOP hơnđối tượng nhân bảnPHP cung cấp một từ khóa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2339 để sao chép một đối tượng, thực hiện sao chép bóng tối. Nếu phương thức ma thuật 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2363 được định nghĩa trong lớp, nó sẽ được chạy sau bản sao bóng tối __autoload()[LÀM] không gian tênBạn có thể có hai phiên bản của lớp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2341 trong chương trình của mình không? Một không gian tên (được gọi là gói trong Java) nhóm các lớp, giao diện, hàm và hằng có liên quan. Nó cố gắng
Những từ khóa này được sử dụng trong quản lý không gian tên
Xác định một không gian tênĐể xác định một không gian tên, hãy viết " 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2344" làm câu lệnh ĐẦU TIÊN trong tệp PHP của bạn, đặt không gian tên "hiện tại". Ví dụ, Bạn có thể xác định nhiều không gian tên trong một tệp. Nhưng đừng làm điều đó để thực hành tốt nhất không gian toàn cầuBất kỳ thực thể nào được xác định trong không gian tên đều thuộc về không gian chung không gian tên phụPHP hỗ trợ cái gọi là không gian tên phụ, với các tên được phân tách bằng dấu gạch chéo ngược, e. g. , " 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2345". Hãy lưu ý rằng không có dấu gạch chéo ngược hàng đầu Cách tốt nhất là giữ nguồn của bạn trong thư mục khớp với không gian tên. Ví dụ, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2345 sẽ được giữ trong Path/To/MyProject/ZBox/ModSec Một lần nữa, hãy lưu ý rằng PHP sử dụng dấu gạch chéo ngược trong không gian tên Các thực thể tham chiếu trong không gian tênĐể tham chiếu một thực thể trong một không gian tên, bạn có thể
Để truy cập một thực thể trong một không gian tên khác bên ngoài không gian tên hiện tại, hãy sử dụng tên đủ điều kiện Để truy cập một thực thể trong không gian chung bên ngoài không gian tên hiện tại, hãy đặt tiền tố cho thực thể bằng dấu gạch chéo ngược ở đầu. Ví dụ, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2352 [TODO] Ví dụ Hằng số ma thuật __NAMESPACE__Hằng ma thuật 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2349 chứa tên của không gian tên hiện tại (trong chuỗi). Trong không gian chung, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2349 chứa một chuỗi rỗng Nhập khẩu với "sử dụng. "Bạn có thể gọi toán tử 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2355 để nhập một lớp, giao diện hoặc không gian tên. Khi một thực thể được nhập, bạn có thể truy cập thực thể đó bằng tên của thực thể đó, thay vì tên đủ điều kiện. (Điều này tương tự như câu lệnh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2356 trong Java; hoặc 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2357 trong C#. ) PHP5. 6 cũng hỗ trợ nhập các hàm và hằng số. Ví dụ, Bí danh với "sử dụng. như. "Hơn nữa, bạn có thể xác định bí danh ở dạng " 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2358". Ví dụ, Chức năng/Hằng số quay trở lại Không gian toàn cầuMột tên lớp không đủ tiêu chuẩn được phân giải thành không gian tên hiện tại. Để sử dụng một lớp bên ngoài không gian tên hiện tại, bạn cần sử dụng tên đủ điều kiện Tên hàm và hằng số không đủ tiêu chuẩn được phân giải tương tự thành không gian tên hiện tại. Tuy nhiên, nếu không giải quyết được, hàm/hằng sẽ quay trở lại không gian chung 5 khái niệm OOP là gì?Danh sách các khái niệm OOP trong Java . Các đối tượng Các lớp học Sự vật Lớp trừu tượng Di sản đa hình đóng gói 4 khái niệm của OOP là gì?Các ý tưởng chính đằng sau Lập trình hướng đối tượng của Java, các khái niệm OOP bao gồm trừu tượng hóa, đóng gói, kế thừa và đa hình .
7 khái niệm của OOP là gì?Trừu tượng hóa, đóng gói, đa hình và kế thừa là bốn nguyên tắc lý thuyết chính của lập trình hướng đối tượng. Nhưng Java cũng hoạt động với ba khái niệm OOP khác. hiệp hội, tập hợp, và thành phần.
PHP có hỗ trợ OOP không?Bản thân ngôn ngữ PHP không hướng đối tượng. Ngôn ngữ Ruby là hướng đối tượng, Java cũng vậy, ngoại trừ các kiểu nguyên thủy. PHP là một ngôn ngữ lai có khả năng tạo đối tượng, Delphi cũng vậy. Có một sự khác biệt lớn về ngữ nghĩa giữa ngôn ngữ lai và ngôn ngữ hướng đối tượng |