Interface
Interface là một lớp rỗng chỉ chứa khai báo về tên phương thức không có khai báo về thuộc tính hay thứ gì khác và các phương thức này cũng là rỗng. Bởi vậy bất kỳ lớp nào sử dụng lớp interface đều phải định nghĩa các phương thức đã khai báo ở lớp interface, nếu cố tình không khai báo thì PHP sẽ báo lỗi, để sử dụng lớp interface bạn chỉ việc khai báo với từ khóa implements và một lớp có thể sử dụng nhiều interface cũng như vừa có thể kế thừa từ lớp khác và đồng thời sử dụng interface. Ví dụ:
interface a{
public function pa();
}
interface b{
public function pb();
}
class c{
public function pc(){
echo 'phuong thuc pc cua lop c';
}
}
class d extends c implements a,b{
public function pa(){
echo 'phuong thuc pa duoc khai bao interface';
}
public function pb(){
echo 'phuong thuc pb duoc khai bao interface';
}
public function pd(){
echo 'phuong thuc pc cua lop d';
}
}
$s = new d();
$s->pc();
Abstract class
Lớp asbtract cũng gần giống như interface, ngoại trừ nó có thể chứa phương thức và thuộc tính thông thường.
Trong lớp asbtract chứa các phương thức asbtract chúng cũng rỗng giống như phương thức trong interface, vậy nên khi một lớp kế thừa từ lớp asbtract thì bắt buộc phải định nghĩa phương thức đã khai báo ở lớp abstract. ex : abstract public function collectRates(Mage_Shipping_Model_Rate_Request $request);
Một lớp asbtract khi sử dụng cũng như kế thừa bạn khai báo với từ khóa "extends" điều này không giống như interface.
Ví dụ:
abstract class a{
protected $vara = 'pa2() cua lop a';
abstract function pa();
protected function pa2(){
return $this->vara;
}
}
class b extends a{
public function pa(){
echo 'pa() duoc khai bao abtract o lop a';
}
public function pb(){
echo $this->pa2();
}
}
$s = new b();
$s->pb();
Một điều chú ý nữa là bạn có thể sử dụng cả interface và kế thừa lớp abstract trong cùng một lớp.
Vậy ứng dụng của interface và abstract class để làm gì khi ta có thể xây dựng các lớp cơ sở và sau đó xây dựng các lớp kế thừa một cách thông thường ? vấn đề ở đây chính là tính chặt chẽ của mô hình khi chúng ta có những phương thức chung để định nghĩa cho một cái gì đó mà nó có các cá thể bắt buộc phải có những đặc điểm trên.
Google +1 là một tính năng mới mà Google đưa vào kết quả tìm kiếm trên Google Search giúp người...
1. Nội dung quá sơ sài và kém hấp dẫn Bạn nên nhớ rằng khi người lướt website họ tìm các trang...
Đây là stock ta sẽ dùng Và đây là kết quả thu được Nào, bắt đầu nhé Bước...
$product = Mage::getModel('catalog/product')->load( 'id' ); $stockItem = $product->getStockItem(); $stockItem->setData('manage_stock',...
$shipping = Mage::helper(’checkout’)->getQuote()->getShippingAddress()->getShipping_amount();
1 – Akismet Rất hữu hiệu trong việc phòng chống spam comments. Để sử dụng nó bạn cần...
Không phải web giá rẻ là hàng chất lượng kém, Không phải web giá rẻ là xấu, ta nên tìm...
Các bạn có thể ứng dụng làm 1 rừng chong chóng rất đẹp và rất đơn giản. Hoặc tạo hiệu...
Có rất nhiều bạn đã biết đến hiệu ứng này, nhưng mình nghĩ mỗi người sẽ có những...
HTML5 là một ngôn ngữ được thiết kế để thiết lập nội dung web. Nó nhằm làm cho việc thiết...
1. Chuyển về vùng làm việc mặc định Bạn bấm chọn vùng Essentials để chọn lại...
Chào các bạn hôm nay mình xin hướng dẫn các bạn làm quay tròn một đối tượng trong flash,...
Khi vào các trang web chúng ta thường thấy rất ấn tượng bời các đoạn animation làm bằng Flash...
Cái intro kiểu này mình rất hay thấy trên các thiếp điện tử cũng như trên các game trên net. Xin giới...
HTML5, bước tiến mới của HTML (HyperText Markup Language - ngôn ngữ đánh dấu siêu văn bản, được...
The <canvas> element is used to draw graphics, on the fly, on a web page. Draw a red rectangle, a gradient rectangle,...
Tạo nền trong suốt transparency cho một phần tử HTML nào đó sử dụng CSS. Áp dụng các thuộc tính...
Tôi muốn giới thiệu với các bạn các bước cơ bản nhất để tạo bóng phản chiếu cho vật...
Định dạng GIF được sử dụng khá nhiều trong các banner quảng cáo động với dung lượng tối ưu...
File .htaccess(hypertext access) của apache là một công cụ cực kỳ hữu dụng. File .htaccess thường được...