9. foreach ($poems as $p ){
6.2.7. Lớp và đối tƣợng
Lớp và đối tƣợng trong PHP đƣợc cài đặt khá giống trong Java. Định nghĩa
một lớp có mẫu nhƣ sau: class ClassName {
[tính_khả_kiến] dữ_liệu_thành_viên/thuộc_tính [tính_khả_kiến] hàm_thành_viên/phương_thức
}
Định nghĩa lớp đƣợc x{c định bởi từ kho{ class tiếp theo l| ClassName để định danh lớp, sau đó l| định nghĩa các thành viên của lớp. Thành viên dữ liệu (data
member) cũng đƣợc gọi là thuộc tính (attribute). Tƣơng tự, thành viên hàm đƣợc gọi là phƣơng thức (method). Tính khả kiến (visibility) của mỗi thành viên đƣợc xác định bằng các từ khóa private, protected và public. Đối tƣợng đƣợc khai báo theo cú pháp nhƣ sau:
$obj = new ClassName();
Truy cập các thành viên của đối tƣợng theo cú pháp: $obj->attr;
$obj->method();
Hàm tạo và hàm hủy đƣợc đặt tên là __construct() và __destruct(), tƣơng ứng.
Lƣu ý có hai dấu gạch dƣới (_) ở đầu tên hàm tạo và hàm hủy. Kế thừa đƣợc cài đặt tƣơng tự trong Java:
class SubClassName extends ClassName {
[tính_khả_kiến] dữ_liệu_thành_viên_của_lớp_con [tính_khả_kiến] hàm_thành_viên_của_lớp_con
}
Để truy cập các thành viên đƣợc kế thừa từ lớp cha nhƣng bị che (overwrite)
do trùng tên trong lớp con, sử dụng cú pháp:
parent::thành_viên_được_kế_thừa_lớp_cha_nhưng_bị_che
Lớp ảo, phƣơng thức ảo đƣợc cài đặt với từ khóa abstract cũng giống trong
Java, nhƣ sau:
WebAppDevLê Đình Thanh, Nguyễn Việt Anh
133 abstract [tính_khả_kiến] hàm_thành_viên();
}
Hiện tƣợng đa hình (polymorphism) cũng diễn ra giống nhƣ trong Java.
Nhìn chung, định nghĩa lớp, khai báo và sử dụng đối tƣợng trong PHP khơng khác trong Java. Lập trình viên Java có thể lập trình hƣớng đối tƣợng trong PHP ngay và tra cứu thêm về PHP khi cần thiết.
6.2.8.Giao diện
Giống nhƣ trong Java, giao diện trong PHP x{c định c{c phƣơng thức m| lớp phải c|i đặt. Giao diện chỉ chứa hằng số và chữ ký của các phƣơng thức. Tất cả c{c phƣơng thức trong giao diện phải có tính khả kiến là public. Lớp c|i đặt phải c|i đặt tất cả c{c phƣơng thức thuộc giao diện. Khai báo giao diện bằng từ khóa
interface nhƣ ví dụ sau: interface iTemplate {
public function setVariable($name, $var);
public function getHtml($template);
}
Lớp cài đặt giao diện đƣợc định nghĩa cùng từ khóa implements nhƣ ví dụ sau:
class Template implements iTemplate {
private $vars = array();
public function setVariable($name, $var) { ... }
public function getHtml($template) { ... }
}