PHP Interfaces

อินเตอร์เฟซคือ การระบุวิธีการที่คลาสควรใช้ทำให้ง่ายต่อการใช้คลาสในลักษณะที่เหมือนกัน เมื่อคลาสหนึ่งคลาสใช้อินเตอร์เฟซเดียวกันจะเรียก “polymorphism”

การประกาศใช้อิเตอร์เฟซใช้คีย์เวิร์ด  interface  

ไวยากรณ์

<?php
interface InterfaceName {
  public function someMethod1();
  public function someMethod2($name, $color);
  public function someMethod3() : string;
}
?>

 

อินเตอร์เฟซมีความคล้ายกับคลาสนามธรรมซึ่งข้อแตกต่างระหว่างอินเตอร์เฟซกับคลาสนามธรรมมีดังนี้

ตารางเปรียบเทียบความแตกต่างระหว่างอินเตอร์เฟซ (Interface) กับ คลาสนามธรรม (Abstract Class)

Interface Abstract Class
ไม่สามารถมีคุณสมบัติ (Properties) มีคุณสมบัติได้ (Properties)
เมธอดจะต้องเป็น public ทั้งหมด เมธอดสามารถเป็นได้ทั้ง public , protected หรือ private 

 

การใช้งานอิเตอร์เฟซจะต้องใช้คีย์เวิร์ด implements ดังตัวอย่างที่ 1

 

ตัวอย่างที่ 1 การใช้งาน interface

<?php

interface ExamInterface{
    function exam1();
}

class GetInterface implements ExamInterface{
    const MESSAGE_TITLE = "<h1>Interface</h1>";
    public function exam1(){
    	echo self::MESSAGE_TITLE;
    	echo "Hello Interface";
    }
}

$itf = new GetInterface();
$itf->exam1();

?>

ไฟล์ที่ 1 การใช้งานอินเตอร์เฟซ

 

ตัวอย่างที่ 2

<?php

interface Game{
    function gameName();
}

class MobileGame implements Game{
    public function gameName(){
    	echo self::class." : ";
    	echo " Mobile legend 5V5 <br>";
    }
}

class ComputerGame implements Game{
    public function gameName(){
    	echo self::class." : ";
    	echo " Hero Of Newerth (HON)";
    }
}

$mobile = new MobileGame();
$mobile->gameName();

$computer = new ComputerGame();
$computer->gameName();

?>

ไฟล์ที่ 2 การใช้งานอิเตอร์เฟซ 2

สรุปเนื้อหาเรื่องอินเตอร์เฟซ (Interface) จากตัวอย่างไฟล์ที่ 1 และ 2 จะเห็นได้ว่า มีการสร้างอินเตอร์เฟซเพื่อควบคุมรูปแบบของการสร้างเมธอด หากคลาสไหนที่ต้องการใช้อินเตอร์เฟซจะต้องใช้คีย์เวิร์ด implements ตามด้วยชื่อของอินเตอร์เฟซ และจะต้องสร้างเมธอดตามรูปแบบที่อินเตอร์เฟซกำหนดเท่านั้น

หากคุณพบคำที่สะกดผิด เว้นวรรคไม่ถูกต้อง ฯ โปรดแจ้งให้เราทราบ โดยลากคลุม (highlight) ข้อความนั้น แล้วกด Ctrl + Enter

ไม่สามารถคัดลอกเนื้อหานี้

Spelling error report

The following text will be sent to our editors: