Interface Class
Interface Class เป็นรูปแบบ การเขียน OOP Class การเขียน Interface คือเหมือนการเขียน โครงร่างของคลาส ที่ยังใช้งานไม่ได้ ต้องรอให้ คลาสอื่นสืบทอดคุณสมบัติ เช่นเดียวกับ Abstract Class ที่มีเพียงแค่ชื่อ Method แต่ไม่มีในส่วนของหน้าที่การทำงาน เป็นเหมือนโครงสร้างเปล่า
<?php
interface testinterface
{
public function name();
public function age();
public function address();
}
?>
การสร้าง Class interface ไม่จำเป็นต้องนำหน้า ด้วยคำว่า Class สามารถที่จะ เขียน interface เเล้วตามด้วยชื่อ Class ได้เลย
class testinterface_new implements testinterface{
public function name()
{
echo __LINE__;
}
public function age()
{
echo __LINE__;
}
public function address()
{
echo __LINE__;
}
public function address2()
{
echo __LINE__;
}
}
testinterface_new::name();
#testinterface::address2();
$obj_test = new testinterface_new();
$obj_test->name();
$obj_test->address2();
?>
ส่วนในการเรียกใช้ Class interface จะต้องใช้ implements เเทน extends
เมื่อ มีการเรียกใช้งาน Class interface สามารถ เรียกใช้งานผ่าน
testinterface_new::name();
$obj_test = new testinterface_new();
$obj_test->name();
การสืบทอดคุณสมบัติจาก Class interface มาใช้นอกจากจะต้องประกาศ methods เพื่อใช้งานทุกตัวแล้ว ยังสามารถ สร้างขึ้นเอง methods เพื่อใช้งานในคลาสได้ เเต่การเรียกใช้งานจะไม่สามารถเรียกผ่าน testinterface::address2(); ได้
ซึ่งใน Class ลูก สามารถ implements Interface Class ได้มากกว่า 1 Class เเต่จะต้องเรียกใช้ methods จาก interface testinterface ทุก methods ไม่เช่นนั้น จะ error สามารถศึกษาได้จาก การสร้าง implements class จาก muti Interface
Abstract Class |
Interface Class | |
การใช้งาน :: |
โครงร่างของคลาส ที่ยังใช้งานไม่ได้ ต้องรอให้ คลาสอื่นสืบทอดคุณสมบัติ |
โครงร่างของคลาส ที่ยังใช้งานไม่ได้ ต้องรอให้ คลาสอื่นสืบทอดคุณสมบัติ |
การสืบทอด | extends | implements |
คุณสมบัติ :: |
สามารถ extends Abstract Class ได้เพียง 1 Class | สามารถ implements Interface Class ได้มากกว่า 1 Class |
ไม่ต้องประกาศการใช้งานทุก methode | จะต้องประกาศการใช้งานของ methode ทุก methode ที่มีอยู่ | |
การเรียกใช้งาน:: | จะต้องประกาศออบเจ็กก่อน $obj_test = new testinterface_new(); | ไม่ต้องประกาศออบเจ็กก็ได้สามารถเรียกใช้งานได้เลย testinterface::address2(); |