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

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
  • đa hình
  • đóng gói
  • Di sản

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ể đó


In our first example, we create a simple object.

class Simple {}

Đây là một định nghĩa lớp đơn giản. Phần thân của mẫu trống. Nó không có bất kỳ dữ liệu hoặc phương pháp.

$object = new Simple[];

Chúng tôi tạo một thể hiện mới của lớp

$p2 = new Person[];
$p2->name = "Beky";
6. Đối với điều này, chúng tôi có từ khóa
$p2 = new Person[];
$p2->name = "Beky";
7. Biến
$p2 = new Person[];
$p2->name = "Beky";
8 là handle của đối tượng đã tạo.

print_r[$object];
echo gettype[$object], "\n";

Chúng ta sử dụng hàm

$p2 = new Person[];
$p2->name = "Beky";
9 để lấy thông tin về đối tượng và .

________số 8

Chúng tôi không nhận được nhiều thông tin, vì định nghĩa lớp trống. Loại biến là

echo $p1->name . "\n";
echo $p2->name . "\n";
1.

Thuộc tính đối tượng PHP

Thuộc tính đối tượng là dữ liệu được gói trong một thể hiện của một lớp. Các thuộc tính đối tượng được gọi là biến thể hiện hoặc trường thành viên. Một biến thể hiện là một biến được định nghĩa trong một lớp, mà mỗi đối tượng trong lớp .

$object = new Simple[];
0

Trong tập lệnh PHP ở trên, chúng ta có một lớp trừu tượng


In our first example, we create a simple object.

class Simple {}
98. Lớp này biến thành hai lớp hậu duệ.

In our first example, we create a simple object.

class Simple {}
99 và
$object = new Simple[];
00. Cả hai đều cung cấp triển khai phương thức
$object = new Simple[];
42 của riêng họ. Tính đa hình mang lại tính linh hoạt và khả năng mở rộng cho các hệ thống OOP.

Chúng ta có thể tưởng tượng vũ trụ của chúng ta được tạo thành từ các vật thể khác nhau như mặt trời, trái đất, mặt trăng, v.v. Tương tự, chúng ta có thể tưởng tượng chiếc ô tô của mình được làm từ các vật thể khác nhau như bánh xe, tay lái, bánh răng, v.v. Tương tự, có các khái niệm lập trình hướng đối tượng coi mọi thứ là một đối tượng và triển khai phần mềm bằng các đối tượng khác nhau

Khái niệm hướng đối tượng

Trước khi đi vào chi tiết, hãy định nghĩa các thuật ngữ quan trọng liên quan đến Lập trình hướng đối tượng

  • Lớp - Đây là kiểu dữ liệu do lập trình viên xác định, bao gồm các hàm cục bộ cũng như dữ liệu cục bộ. Bạn có thể coi một lớp như một khuôn mẫu để tạo ra nhiều thể hiện của cùng một loại [hoặc lớp] đối tượng

  • Đối tượng - Một thể hiện riêng lẻ của cấu trúc dữ liệu được xác định bởi một lớp. Bạn định nghĩa một lớp một lần và sau đó tạo nhiều đối tượng thuộc về nó. Các đối tượng còn được gọi là thể hiện

  • Biến thành viên - Đây là các biến được định nghĩa bên trong một lớp. Dữ liệu này sẽ ẩn đối với bên ngoài lớp và có thể được truy cập thông qua các hàm thành viên. Các biến này được gọi là thuộc tính của đối tượng khi đối tượng được tạo

  • Hàm thành viên - Đây là các hàm được định nghĩa bên trong một lớp và được sử dụng để truy cập dữ liệu đối tượng

  • Kế thừa - Khi một lớp được định nghĩa bằng cách kế thừa chức năng hiện có của lớp cha thì nó được gọi là kế thừa. Ở đây lớp con sẽ kế thừa tất cả hoặc một số hàm thành viên và biến của lớp cha

  • Lớp cha mẹ - Một lớp được kế thừa bởi một lớp khác. Đây còn được gọi là lớp cơ sở hoặc siêu lớp

  • Lớp con - Một lớp kế thừa từ một lớp khác. Đây còn được gọi là lớp con hoặc lớp dẫn xuất

  • Đa hình - Đây là một khái niệm hướng đối tượng trong đó cùng một chức năng có thể được sử dụng cho các mục đích khác nhau. Ví dụ: tên hàm sẽ giữ nguyên nhưng nó có số lượng đối số khác nhau và có thể thực hiện các tác vụ khác nhau

  • Quá tải - một loại đa hình trong đó một số hoặc tất cả các toán tử có cách triển khai khác nhau tùy thuộc vào loại đối số của chúng. Các chức năng tương tự cũng có thể bị quá tải với cách thực hiện khác nhau

  • Trừu tượng hóa dữ liệu - Bất kỳ biểu diễn dữ liệu nào trong đó các chi tiết triển khai bị ẩn [trừu tượng hóa]

  • Đóng gói - đề cập đến một khái niệm trong đó chúng ta đóng gói tất cả dữ liệu và các hàm thành viên lại với nhau để tạo thành một đối tượng

  • Constructor − đề cập đến một loại hàm đặc biệt sẽ được gọi tự động bất cứ khi nào có sự hình thành đối tượng từ một lớp

  • Hàm hủy − đề cập đến một loại hàm đặc biệt sẽ được gọi tự động bất cứ khi nào một đối tượng bị xóa hoặc vượt ra khỏi phạm vi

Định nghĩa các lớp PHP

Dạ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 -

  • Lớp dạng đặc biệt, theo sau là tên của lớp mà bạn muốn định nghĩa

  • Một tập hợp các dấu ngoặc nhọn kèm theo bất kỳ số lượng khai báo biến và định nghĩa hàm nào

  • Khai báo biến bắt đầu bằng dạng đặc biệt var, theo sau là tên biến $ thông thường;

  • Các định nghĩa hàm trông giống như các hàm PHP độc lập nhưng là cục bộ của lớp và sẽ được sử dụng để thiết lập và truy cập dữ liệu đối tượ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 PHP

Khi 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ên

Sau 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ựng

Hà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ệt

Giố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 -

  • Tự động có tất cả các khai báo biến thành viên của lớp cha

  • Tự động có tất cả các chức năng thành viên giống như cha mẹ, mà [theo mặc định] sẽ hoạt động giống như các chức năng đó trong cha mẹ

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ăng

Cá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ộng

Trừ 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 -

  • Từ bên ngoài lớp mà nó được khai báo

  • Từ bên trong lớp mà nó được khai báo

  • Từ bên trong một lớp khác thực hiện lớp mà nó được khai báo

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ện

Cá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ượng

Lớ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ĩnh

Khai 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ùng

PHP 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.

Chủ Đề