Ngôn ngữ php được thiết kế cho các khái niệm oops?
Có ba mô hình lập trình được sử dụng rộng rãi ở đó. thủ tục, chức năng và hướng đối tượng. PHP hỗ trợ cả lập trình thủ tục và hướng đối tượng Show
Lập trình hướng đối tượng (OOP) là một mô hình lập trình sử dụng các đối tượng và tương tác của chúng để thiết kế các ứng dụng và chương trình máy tính Các khái niệm lập trình cơ bản trong OOP là
Trừu tượng hóa là đơn giản hóa thực tế phức tạp bằng cách mô hình hóa các lớp phù hợp với vấn đề. Đa hình là quá trình sử dụng toán tử hoặc hàm theo những cách khác nhau cho các dữ liệu đầu vào khác nhau. Đóng gói ẩn các chi tiết triển khai của một lớp khỏi các đối tượng khác. Kế thừa là một cách để hình thành các lớp mới bằng cách sử dụng các lớp đã được định nghĩa Các đối tượng là các khối xây dựng cơ bản của chương trình PHP OOP. Một đối tượng là sự kết hợp của dữ liệu và phương thức. Trong một chương trình OOP, chúng ta tạo các đối tượng. Các đối tượng này giao tiếp với nhau thông qua các phương thức. Mỗi đối tượng có thể nhận tin nhắn, gửi tin nhắn và xử lý dữ liệu Có hai bước để tạo một đối tượng. Đầu tiên, chúng ta tạo một lớp. Một lớp là một khuôn mẫu cho một đối tượng. Nó là một kế hoạch chi tiết mô tả trạng thái và hành vi mà tất cả các đối tượng của lớp đều chia sẻ. Một lớp có thể được sử dụng để tạo ra nhiều đối tượng. Các đối tượng được tạo trong thời gian chạy từ một lớp được gọi là các thể hiện của lớp cụ thể đó
Định nghĩa các lớp PHPDạng chung để định nghĩa một lớp mới trong PHP như sau - $object = new Simple();5 Dưới đây là mô tả của từng dòng -
Thí dụĐây là một ví dụ định nghĩa một lớp loại Sách - $object = new Simple();6 Biến $this là một biến đặc biệt và nó đề cập đến cùng một đối tượng tức là. chính nó Tạo đối tượng trong PHPKhi bạn đã xác định lớp của mình, thì bạn có thể tạo bao nhiêu đối tượng tùy thích cho loại lớp đó. Sau đây là ví dụ về cách tạo đối tượng bằng toán tử new $object = new Simple();7 Ở đây chúng tôi đã tạo ba đối tượng và các đối tượng này độc lập với nhau và chúng sẽ tồn tại riêng biệt. Tiếp theo chúng ta sẽ xem cách truy cập hàm thành viên và xử lý các biến thành viên Gọi hàm thành viênSau khi tạo các đối tượng của mình, bạn sẽ có thể gọi các hàm thành viên liên quan đến đối tượng đó. Một hàm thành viên sẽ chỉ có thể xử lý biến thành viên của đối tượng liên quan Ví dụ sau cho thấy cách đặt tiêu đề và giá cho ba cuốn sách bằng cách gọi các hàm thành viên $object = new Simple();8 Bây giờ bạn gọi một hàm thành viên khác để lấy các giá trị được đặt trong ví dụ trên - $object = new Simple();9 Điều này sẽ tạo ra kết quả sau - $p2 = new Person(); $p2->name = "Beky";0 Hàm xây dựngHàm xây dựng là loại hàm đặc biệt được gọi tự động bất cứ khi nào một đối tượng được tạo. Vì vậy, chúng tôi tận dụng tối đa hành vi này, bằng cách khởi tạo nhiều thứ thông qua hàm tạo PHP cung cấp một hàm đặc biệt gọi là __construct() để định nghĩa một hàm tạo. Bạn có thể chuyển bao nhiêu đối số tùy thích vào hàm tạo Ví dụ sau sẽ tạo một hàm tạo cho lớp Books và nó sẽ khởi tạo giá và tiêu đề cho cuốn sách tại thời điểm tạo đối tượng $p2 = new Person(); $p2->name = "Beky";1 Bây giờ chúng ta không cần gọi riêng hàm set để đặt giá và tiêu đề. Chúng ta chỉ có thể khởi tạo 2 biến thành viên này tại thời điểm tạo đối tượng. Kiểm tra ví dụ sau bên dưới - $p2 = new Person(); $p2->name = "Beky";2 Điều này sẽ tạo ra kết quả sau - $p2 = new Person(); $p2->name = "Beky";3 Kẻ hủy diệtGiống như hàm tạo, bạn có thể định nghĩa hàm hủy bằng cách sử dụng hàm __desturation(). Bạn có thể giải phóng tất cả các tài nguyên trong một hàm hủy Di sảnĐịnh nghĩa lớp PHP có thể tùy chọn kế thừa từ định nghĩa lớp cha bằng cách sử dụng mệnh đề mở rộng. Cú pháp như sau - $p2 = new Person(); $p2->name = "Beky";4 Ảnh hưởng của tính kế thừa là lớp con (hoặc lớp con hoặc lớp dẫn xuất) có các đặc điểm sau -
Ví dụ sau kế thừa lớp Books và thêm nhiều chức năng hơn dựa trên yêu cầu $object = new Simple();60 Bây giờ ngoài các chức năng kế thừa, lớp Novel giữ thêm hai chức năng thành viên Ghi đè chức năngCác định nghĩa hàm trong các lớp con ghi đè các định nghĩa có cùng tên trong các lớp cha. Trong lớp con, chúng ta có thể sửa đổi định nghĩa của một hàm kế thừa từ lớp cha Trong ví dụ sau, các hàm getPrice và getTitle được ghi đè để trả về một số giá trị $object = new Simple();61 Thành viên công cộngTrừ khi bạn chỉ định khác, các thuộc tính và phương thức của một lớp là công khai. Điều đó có nghĩa là, chúng có thể được truy cập trong ba tình huống có thể xảy ra -
Cho đến bây giờ chúng tôi đã xem tất cả các thành viên là thành viên công khai. Nếu bạn muốn giới hạn khả năng truy cập của các thành viên trong lớp thì bạn xác định các thành viên của lớp là riêng tư hoặc được bảo vệ thành viên riêng tưBằng cách chỉ định một thành viên riêng tư, bạn giới hạn khả năng truy cập của nó đối với lớp mà nó được khai báo. Thành viên private không thể được tham chiếu từ các lớp kế thừa lớp mà nó được khai báo và không thể truy cập từ bên ngoài lớp Một thành viên lớp có thể được đặt ở chế độ riêng tư bằng cách sử dụng từ khóa riêng trước mặt thành viên $object = new Simple();62 Khi lớp MyClass được lớp khác kế thừa bằng cách sử dụng phần mở rộng, myPublicFunction() sẽ hiển thị, $driver cũng vậy. Lớp mở rộng sẽ không có bất kỳ nhận thức hoặc quyền truy cập nào vào myPrivateFunction và $car, vì chúng được khai báo là riêng tư Thành viên được bảo vệThuộc tính hoặc phương thức được bảo vệ có thể truy cập được trong lớp mà nó được khai báo, cũng như trong các lớp mở rộng lớp đó. Các thành viên được bảo vệ không có sẵn bên ngoài hai loại lớp đó. Một thành viên lớp có thể được bảo vệ bằng cách sử dụng từ khóa được bảo vệ trước thành viên Đây là phiên bản khác của MyClass - $object = new Simple();63 giao diệnCác giao diện được xác định để cung cấp một tên hàm chung cho những người triển khai. Những người triển khai khác nhau có thể triển khai các giao diện đó theo yêu cầu của họ. Có thể nói, giao diện là bộ xương được các nhà phát triển triển khai Kể từ PHP5, có thể định nghĩa một giao diện, như thế này - $object = new Simple();64 Sau đó, nếu một lớp khác triển khai giao diện đó, như thế này - $object = new Simple();65 hằng sốMột hằng số giống như một biến, ở chỗ nó giữ một giá trị, nhưng thực sự giống một hàm hơn vì một hằng số là bất biến. Khi bạn khai báo một hằng số, nó không thay đổi Việc khai báo một hằng số rất dễ dàng, như đã được thực hiện trong phiên bản MyClass này - $object = new Simple();66 Trong lớp này, requiredMargin là một hằng số. Nó được khai báo với từ khóa const và trong mọi trường hợp, nó không thể thay đổi thành bất kỳ thứ gì khác ngoài 1. 7. Lưu ý rằng tên của hằng số không có $ ở đầu, giống như tên biến Các lớp trừu tượngLớp trừu tượng là lớp không thể khởi tạo mà chỉ được kế thừa. Bạn khai báo một lớp trừu tượng với từ khóa trừu tượng, như thế này - Khi kế thừa từ một lớp trừu tượng, tất cả các phương thức được đánh dấu là trừu tượng trong phần khai báo của lớp cha phải được định nghĩa bởi lớp con; $object = new Simple();67 Lưu ý rằng các định nghĩa hàm bên trong một lớp trừu tượng cũng phải được đặt trước từ khóa trừu tượng. Không hợp pháp khi có các định nghĩa hàm trừu tượng bên trong một lớp không trừu tượng Từ khóa tĩnhKhai báo các thành viên hoặc phương thức của lớp là tĩnh giúp chúng có thể truy cập được mà không cần khởi tạo lớp. Một thành viên được khai báo là tĩnh không thể được truy cập bằng một đối tượng lớp được khởi tạo (mặc dù một phương thức tĩnh có thể) Hãy thử ví dụ sau - $object = new Simple();68 từ khóa cuối cùngPHP 5 giới thiệu từ khóa cuối cùng, từ khóa này ngăn các lớp con ghi đè một phương thức bằng cách thêm tiền tố vào định nghĩa bằng từ khóa cuối cùng. Nếu bản thân lớp đang được định nghĩa cuối cùng thì nó không thể được mở rộng Ví dụ sau dẫn đến lỗi nghiêm trọng. Không thể ghi đè phương thức cuối cùng BaseClass. thêmThử nghiệm() $object = new Simple();69 Gọi các nhà xây dựng cha mẹThay vì viết một hàm tạo hoàn toàn mới cho lớp con, hãy viết nó bằng cách gọi hàm tạo của cha mẹ một cách rõ ràng và sau đó làm bất cứ điều gì cần thiết ngoài việc khởi tạo lớp con. Đây là một ví dụ đơn giản - $object = new Simple();70 Trong ví dụ này, chúng ta có một lớp cha (Name), có một hàm tạo hai đối số và một lớp con (NameSub1), có một hàm tạo ba đối số. Hàm tạo của các hàm NameSub1 bằng cách gọi rõ ràng hàm tạo chính của nó bằng cách sử dụng. cú pháp (chuyển hai đối số của nó) và sau đó thiết lập một trường bổ sung. Tương tự, NameSub1 định nghĩa hàm toString() không phải hàm tạo của nó theo hàm cha mà nó ghi đè LƯU Ý - Một hàm tạo có thể được định nghĩa với cùng tên với tên của một lớp. Nó được định nghĩa trong ví dụ trên Ngôn ngữ nào là tốt nhất cho khái niệm Oops?Ngôn ngữ nào tốt nhất cho lập trình hướng đối tượng? . Java có một cộng đồng lớn với nhiều tài nguyên và thư viện nên rất dễ dàng cho người mới bắt đầu học. Java is one of the best and most widely used programming languages for OOP. Java has a large community with lots of resources and libraries, so it is easy for beginners to learn.
PHP là thủ tục hay OOP?Trên thực tế, PHP ban đầu được phát triển như một ngôn ngữ thủ tục và chỉ sau đó được mở rộng sang OOP . Các lập trình viên PHP không thể đồng ý về phong cách nào là thích hợp hơn. Đối với tôi, phương pháp lập trình hiệu quả nhất chỉ đơn giản là vấn đề quan điểm, yêu cầu của dự án và mức độ kinh nghiệm. |