Ngôn ngữ PHP – Interface PHP

Ngôn ngữ PHP

– Interface PHP

Bài trước

Bài sau

Template interface trong php

Thoạt nhìn qua các ta thấy Interface rất giống với Abstract trong php ? Nhưng về bản chất bên trong hoàn toàn khác nhau. Interface không phải là một lớp cụ thể mà là một khuôn mẫu để cho một đối tượng implement nó, và đương nhiên là ta không thể tạo một biến Interface. Ngược lại lớp Abstract là một lớp cụ thể, có đầy đủ các tính chất của một đối tượng, có thể gọi, định nghĩa các hàm trong nó. Đối với hằng số ở lớp implement không được định nghĩa lại.

Cú pháp: interface [interfaceName]

Một số điểm cần lưu ý khi làm việc với interface.

  • Lớp kế thừa không được định nghĩa lại hằng số đã được định nghĩa trong interface.
  • Định nghĩ đúng các hàm của lớp kế thừa như trong interface.
  • Định nghĩa đúng mức truy cập các hàm của lớp kế thừa như trong interface.
  • Một interface chứa các hành vi(Action) mà một class(lớp) triển khai.
  • Một interface có thể bao gồm bất cứ lượng phương thức nào.
  • Bạn không thể khởi tạo một interface.
  • Một interface không chứa bất cứ hàm contructor nào.
  • Tất cả các phương thức của interface đều là abstract.
  • Một interface không thể chứa một trường nào trừ các trường vừa static và final.
  • Một interface không thể kế thừa từ lớp, nó được triển khai bởi một lớp.
  • Một interface có thể kế thừa từ nhiều interface khác.

Ví dụ:

<?php
interface IA{
    public function pa();
}
interface IB{
    public function pb();
}
class C{
    public function pc(){
        echo 'phuong thuc pc cua lop c';
    }
}
// extend dc 1 class, nhưng implements nhiều interface
class D extends C implements IA,IB{
    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();
?>

Xem ví dụ

Sự khác biệt giữa lớp trừu tượng và giao diện

Xem hình bên dưới chúng ta sẽ thấy, một lớp mở rộng (extends) một lớp khác, một giao diện mở rộng (extends) một giao diện khác, nhưng một lớp thực thi (implements) một giao diện.

Ví dụ: Tạo Interface Drawable

Trong ví dụ này, một giao diện Drawable chỉ có một phương pháp. Hai lớp Rectangle và Circle thực thi phương thức trong interface Drawable.

<?php
//Ví dụ 2
interface IDrawable
{  
	function draw();  
}  
//Implementation: by second user  
class Rectangle implements IDrawable
{  
 function draw()
	{
		echo"drawing rectangle";
	}  
}  
class Circle implements IDrawable
{  
	public function draw()
	{
		echo"drawing circle";
	}  
}  

 $circle = new Circle();
 $circle->draw();
?> 

Xem ví dụ

Đa kế thừa trong PHP

Một lớp thực thi (implements ) nhiều giao diện, hoặc giao diện mở rộng (extends) nhiều giao diện, tức là đa thừa kế

Ví dụ:

<?php
interface IPrintable
{  
	function printMe();  
}  
interface IShowable
{  
	function show();  
}  

class A7 implements IPrintable, IShowable
{  
	public function printMe()
	{
		echo "Hello";
	}  
	public function show()
	{
		echo "Welcome";
	}  
}
$a7 = new A7();
$a7->printMe();
$a7->show();
?>

Xem ví dụ

Bài trước

Bài sau