2. • Trước khi mình giới thiệu qua một số hàm thường dùng trong
WordPress, mình muốn nói trước về khái niệm Class (lớp) và
Object (đối tượng) trong PHP vì rất nhiều hàm trong WordPress
trả kết quả về là dạng đối tượng nên bạn nên đọc bài này để
hiểu cách hoạt động của Lớp và Đối tượng. Bây giờ bạn cần
biết trước rằng đối tượng là kiểu dữ liệu được tạo ra bởi một
lớp.
3. Định nghĩa Lớp và Đối tượng
• Lớp nghĩa là một khung kịch bản của một đối tượng, hoặc bạn
có thể hiểu đối tượng được tạo ra từ một lớp. Trong lớp nó sẽ
có các biến mà biến này ta gọi là các thuộc tính (properties), và
lớp nó có thể chứa các hàm mà các hàm này chúng ta gọi nó là
phương thức (method).
• Mình có ví dụ sau, chiếc xe là lớp, trong chiếc xe đó nó có các
thuộc tính như màu đỏ, 1 cầu 2 cầu, và các hành động như
chạy, lùi, thắng ta xem như một phương thức.
4. • Bây giờ chúng ta cùng viết một lớp tên là meeting như sau.
• 01
• 02
• 03
• 04
• 05
• 06
• 07
• 08
• 09
• 10
• 11
• 12
• 13
• 14
• class meeting {
•
• public $name = 'Thach';
•
• function hello()
• {
• return $this->name . ' saying hello';
• }
•
• function goodbye()
5. • Trong đó, mình tạo ra một thuộc tính $name trong lớp meeting, biến này
mình có đặt từ khoá là public mà cái này tí nữa mình sẽ giải thích sau.
• Kế đó mình tạo thêm một phương thức tên hello() trong lớp và nó sẽ trả
về là giá trị của thuộc tính $namekèm theo một đoạn chữ. Lưu ý rằng khi
mình viết code trong một lớp mà nếu mình muốn sử dụng một thuộc tính
nào đó có trong lớp thì sẽ sử dụng từ khoá $this->tên_thuộc_tính.
• Bây giờ chúng ta đã có 2 phương thức và một thuộc tính trong lớp. Chúng
ta sẽ sử dụng nó bằng cách tạo ra một biến để hứng lớp này.
• 01
• $say = new meeting;
• Nghĩa là khi sử dụng lớp, chúng ta cần cho biến nào hứng dữ liệu của lớp
thì sẽ có từ khoá new đằng trước tên lớp cần sử dụng.
• Bây giờ bạn dump cái biến $say, bạn sẽ thấy nó có kiểu dữ liệu là Object.
6. Truyền tham số vào lớp
• Như ở ví dụ trên, chúng ta có thuộc tính $name có giá trị sẵn là 'Thach'. Vậy chúng ta cần tự thiết lập giá trị này khi tạo đối tượng thì làm sao? Trước hết, chúng ta phải tạo ra cho nó thêm một phương thức nào đó mà nó sẽ có nhiệm vụ truyền tham số đã
được khai báo khi tạo ra đối tượng.
• 01
• 02
• 03
• 04
• 05
• 06
• 07
• 08
• 09
• 10
• 11
• 12
• 13
• class meeting {
• public $name;
•
• public function set_name( $ten )
• {
• $this->name = $ten;
• }
•
• public function hello()
• {
• return $this->name . ' saying hello';
7. Phương thức khởi tạo ( __construct() )
• Phương thức khởi tạo này nghĩa là một phương thức mà nó sẽ được tự động thực thi khi chúng ta tạo ra một đối tượng mới, và các tham số trong phương thức này chúng ta có thể truyền nó vào ngay lúc tạo ra đối tượng.
• Bây giờ quay lại ví dụ của bài truyền tham số, chúng ta dùng phương thức set_name() để truyền cái $namevào. Nhưng nếu bạn không muốn làm bước này, muốn truyền một tham số gì đó toàn cục trong lớp thì nên sử dụng phương thức __construct.
• 01
• 02
• 03
• 04
• 05
• 06
• 07
• 08
• 09
• 10
• 11
• 12
• 13
• 14
• 15
• 16
• 17
• 18
• <?php
• class meeting {
• public $name;
• public $skill;
• function __construct($ten, $kynang)
8. Kế thừa lớp
• Kế thừa lớp nghĩa là bạn tạo ra một lớp con mới sẽ kế thừa lại
một lớp nào đó với các thuộc tính và phương thức có sẵn, từ
đó bạn có thể tuỳ biến lại code bên trong một phương thức
hoặc thuộc tính nào đó.
• Ví dụ, mình có lớp Car được gọi là lớp mẹ, trong đây sẽ có sẵn
các thuộc tính và phương thức của một chiếc xe như màu sắc,
chạy, lùi,…Sau đó mình tạo ra một lớp khác con tên BMW và
nó sẽ kế thừa lại lớp Car này vì BMW nó cũng cần màu sắc,
cũng cần chạy, lùi mà.
9. Visibility trong lớp
• Ở các ví dụ trên, bạn có thể thấy mình sử dụng từ khoá public khi khai
báo thuộc tính và phương thức. Và từ khoá này được gọi là từ khoá
visibility. Hiện tại trong lớp, bạn sẽ sử dụng 3 từ khoá phổ biến nhất hiện
tại như:
• public – Nếu phương thức hoặc thuộc tính nào sử dụng từ khoá này thì
nghĩa là chúng ta có thể sử dụng nó ở bất cứ đâu, tức là có thể gọi ra bên
trong một lớp hoặc bên ngoài một lớp, hoặc sử dụng trong một lớp con
(lớp được kế thừa).
• private – Phương thức/Thuộc tính nào sử dụng từ khoá này thì nó chỉ
được truy cập bên trong một lớp của chính nó, không thể sử dụng cho lớp
khác hoặc không thể gọi ra bên ngoài. Ví dụ bạn có thể sử dụng $this-
>name bên trong lớp như không thể gọi ra với $object->name ở bên ngoài
lớp.
• protected – Phương thức/Thuộc tính nào sử dụng từ khoá này là nó sẽ có
thể được truy cập bên trong class hoặc các class kế thừa.
10. Lớp trừu tượng (Class Abstraction)
• Một lớp trừu tượng nghĩa là nó có một hoặc nhiều phương thức
là trừu tượng. Phương thức trừu tượng thì nghĩa là nó phải bắt
buộc được khai báo ở các lớp con. Bạn nên lưu ý rằng dù lớp
của bạn có bao nhiêu phương thức trừu tượng thì lớp đó vẫn là
lớp trừu tượng.
• Để khai báo lớp trừu tượng thì chúng ta chỉ việc thêm từ
khoá abstract đằng trước tên class và tên phương thức mà ta
muốn làm trừu tượng. Lưu ý là phương thức khai báo trừu
tượng sẽ không chứa bất cứ cái gì, ngoại trừ tham số.
11. • Code ở trên là chúng ta tạo ra một lớp tên tp_parent và nó là trừu tượng vì có từ khoá abstract ở trước. Bên trong nó ta
có thuộc tính $args là dạng protected để ta có thể sử dụng nó ở các lớp con nhưng không cho phép truy cập từ bên
ngoài.
• Sau đó chúng ta có phương thức trừu tượng tên set_args(), tức là phương thức này sẽ phải được bắt buộc khai báo ở
lớp con. Cuối cùng là ta có phương thức public là show_args() để có thể sử dụng nó bên ngoài cho mục đích lấy dữ
liệu hiển thị, và chức năng của phương thức này là hiển thị kết quả trả về của phương thức set_args() sau khi nó xử lý.
• Bây giờ chúng ta tạo ra một lớp con kế thừa lại lớp mẹ và thử không khai báo phương thức set_args() cho nó xem cái
gì xảy ra nhé.
• 01
• 02
• 03
• 04
• class tp_child extends tp_parent {}
•
• $child = new tp_child;
• echo print_r ( $child->show_args() )
12. Lời kết
• Trong bài này mục đích của mình là muốn cho bạn hiểu thật kỹ
về khái niệm Class và Object trong PHP, và khi code chúng ta
hoàn toàn sử dụng Class và Object người ta gọi đó là Lập trình
hướng đối tượng. Như vậy lập trình hướng đối tượng không
phải là khó, chỉ là bạn chưa biết cách nên nghe tên nó có vẻ
cao sang nhưng thực ra nó cũng chỉ là việc sử dụng class, kế
thừa rồi sử dụng các đối tượng tạo ra từ class mà thôi.
• Tạm thời ở đây bạn đã hiểu được dữ liệu đối tượng rồi. Ở bài
sau, mình sẽ nói qua cho bạn về một số hàm tiêu biểu trong
WordPress để bạn sử dụng, lúc đó bạn sẽ làm việc với đối
tượng nhiều hơn nữa.