Những điều cần biết khi học PHP
Để bắt đầu với một ngôn ngữ thì không đâu chuẩn chỉ bằng trang chủ của nó, và PHP cũng vậy. Tuy nhiên, để ngồi đọc hết chỗ text trong document ấy thì rất là gian nan. Vì vậy mình xin tổng hợp một số mục mà mình nghĩ là tiêu biểu khi tìm hiểu về ngôn ngữ PHP. Các đặc điểm cơ bản của lập trình ...
Để bắt đầu với một ngôn ngữ thì không đâu chuẩn chỉ bằng trang chủ của nó, và PHP cũng vậy. Tuy nhiên, để ngồi đọc hết chỗ text trong document ấy thì rất là gian nan. Vì vậy mình xin tổng hợp một số mục mà mình nghĩ là tiêu biểu khi tìm hiểu về ngôn ngữ PHP.
Các đặc điểm cơ bản của lập trình hướng đối tượng (OOP) trong PHP
Trước hết hãy cùng đến với khái niệm OOP- Object Oriented programming: là một kĩ thuật lập trình cho phép lập trình viên tập trung vào các đối tượng giống như trong thực tế. Bên cạnh lập trình hướng đối tượng còn có lập trình hướng thủ tục và lập trình hướng modun (có điều kiện sẽ tìm hiểu và phân tích ưu nhược điểm từng phương pháp sau ^^).
Trong lập trình hướng đối tượng, khi mô tả một đối tượng, chúng ta chỉ quan tâm đến 2 vấn đề:
- Các thuộc tính của đối tượng: những thông tin đặc điểm để phân biệt đối tượng (VD: với đối tượng người thì sẽ quan tâm đến thuộc tính như tên, tuổi, giới tính, ...)
- Các phương thức của đối tượng: tức là những hành động đối tượng ấy có thể thực hiện mà ta đang quan tâm (VD: đối tượng người thì có thể chạy, ngồi, ... )
TÍnh kế thừa (Inheritance):
Cái tên của nó đã nói lên tất cả rồi đúng không. Tính chất này cho phép bạn tận dụng những thuộc tính/phương thức có sẵn thay vì phải viết lại. Từ đó có thể tái sử dụng và mở rộng một cách dễ dàng. Để có thể thực hiện kế thừa, ta cần có:
- Một class 'cha' (superclass) đã khai báo các thuộc tính, phương thức.
- Một class 'con' (subclass) kế thừa lại những thuộc tính, phương thức (public và protected) của lớp cha.
--> một cha có thể có nhiều con, nhưng một con thì chỉ có một cha.
Để sử dụng tính kế thừa này thì ta chỉ cần sử dụng từ khóa extends + <Tên-lớp-cha> khi khai báo lớp con.
Tính đóng gói (Encapsulation):
Tính đóng gói hiểu đơn giản là việc giới hạn xem dữ liệu bên trong đối tượng được phép sử dụng (gọi ra) ở đâu. Những dữ liệu này thường là thuộc tính và các phương thức.
Có 3 mức độ giới hạn ứng với 3 từ khóa khai báo:
- Public: các thuộc tính và phương thức được khai báo với từ khóa public sẽ có thể truy cập được từ bên ngoài class (giống như những nơi công cộng ai cũng có thể tự do ra vào)
- Protected: các thuộc tính và phương thức được khai báo với từ khóa protected có thể truy cập được từ bên trong class và các class kế thừa nó (giống như nhà bạn thì sẽ chỉ có bạn và 'con' của bạn có thể vào)
- Private: các thuộc tính và phương thức được khai báo với từ khóa private chỉ có thể truy cập từ bên trong class (còn đây giống như phòng riêng của bạn vậy, chỉ có bạn vào được và sử dụng được).
Tính đa hình (Polymorphism):
Tính đa hình cũng có liên quan đến tính kế thừa ở trên. Khi mà một class con kế thừa class cha thì không phải là dùng y nguyên những phương thức từ lớp cha, mà class con có thể viết lại các phương thức ấy.
Tức là nhiều lớp con cùng kế thừa từ một lớp cha, cùng sử dụng một phương thức nhưng kết quả của mỗi lớp con có thể khác nhau do phương thức đã được viết lại phù hợp với từng lớp.
- Ví dụ:
- Có một lớp cha là đa giác: có phương thức tính chu vi.
- Có 2 lớp con là tam giác và hình chữ nhật cùng kế thừa từ lớp cha đa giác.
- Khi tính chu vi thì mỗi lớp con lại phải viết lại hàm tính chu vi cho phù hợp.
Tính trừu tượng (Abstraction):
Gọi là trừu tượng đã thấy khó hiểu rồi