PHP OOP จะเรียกใช้ class ใน class อื่นๆต้องรู้จักการสืบทอด Inheritance


การเเขียน PHP แบบ OOP เราจำเป็นจะต้องมีกิจกรรมต่างๆแยกออกมาเป็น Class แล้วเราจะใช้งานข้อมูลของ Class อื่นๆต้องทำยังไง งั้นเราจะมาต่อกันด้วยเรื่องของการสืบทอดเจตนารมณ์ หรือการสืบเชื้อสายพันธุกรรมของ class หนึ่งเพื่อเอามาใช้กับอีก class หนึ่งกันนะครับ

php oop inheritance

php oop inheritance

เริ่มจากก่อนอื่นเลย เมื่อเราเขียน Class ขึ้นมาเสร็จแล้ว ใน Class นั้นๆเราอาจจะมี function พิเศษที่ทำงานได้มากกว่า 1 ครั้งซึ่งเราก็จะสามารถนำมา Reuse ใช้ซ้ำใหม่ภายในได้อีกรอบ แต่การที่เราจะเขียนให้แต่ละ class นั้นสามารถใช้งานร่วมกันได้เราจะต้องทำอย่างไร

Inheritance หรือการสืบทอดเป็นคำตอบครับ

เราสามารถที่จะหยิบเอาความสามารถหรือค่า ข้อมลใดที่อย่ใน class อื่นๆมาใช้งานกับเราได้ง่ายเพียงแค่เราทำการกำหนดให้ class ใหม่ของเรานั้นสืบเชื้อสายมาจาก Class แม่แบบ

ลองนึกถึงครอบครัวเราดูนะครับ หากเราอยากให้ลูกเราผิวขาว เราก็คงต้องให้พ่อกับแม่เราเป็นคนผิวขาวทั้งคู่ และหากอยากให้ลูกเป็นคนตัวสูง หน้ากลม ผมหยิก ตาดำหรืออะไรก็ตามเราก็คงต้องดูจากพ่อแม่ว่าจะมีคุณสมบัติเหล่านี้เป็นอย่างไร

งั้นมาลองดูตัวอย่าง การสืบทอด ในแบบของ PHP กันเลยนะครับ ก่อนอื่นผมจะทำการสร้าง Class แรกขึ้นมาก่อน

<?php
class mainClass{ 
      public $name="PHP";
      public function hello()
      {
           echo "Hello ".$this->name;
      }
?>

เป็น Class ง่ายๆนะครับ แค่เก็บ Property name กับ Method ชื่อ hello ซึ่งมีความสามารถในการ echo คำว่า Hello ออกมาเท่านั้นเองแล้ว save ไว้ในไฟล์ชื่อ mainClass.php

ส่วน class ที่สองผมจะสร้างขึ้นมาเก็บไว้ในไฟล์ชื่อ testClass.php โดยแค่เรียกใช้ความสามารถของ Method hello() เท่านั้นเองครับ

<?php
class testClass 
{
  public function testMethod()
  {
    $oMainClass = new mainClass();
    $oMainClass->hello();
  }
}
?>

ใน class นี้ผมทำการเรียก class ที่ชื่อ mainClass ออกมาซึ่งมันถูกเขียนไว้ที่ไฟล์ชื่อ mainClass.php แต่ทีนี้ถ้ารันระบบตอนนี้ก็คงจะไม่เกิดอะไรขึ้นหรือไม่ก็ Error นะครับ เพราะไฟล์ testClass.php ถูกเขียนขึ้นมาแยกออกจากกันกับไฟล์ mainClass.php แบบนี้ยังไม่สามารถทำงานได้ เราต้องทำการดึงไฟล์เข้ามาหากันก่อนนะครับ ซึ่งเราจะใช้ include หรือ require_once ก็ได้

<?php include ("main.php"); ?>

จากนั้นเราจะต้องกำหนดให้ class  ที่ชื่อ testClass นั้นได้สืบทอดค่ามาจากแม่แบบอย่าง mainClass ด้วยคำสั่ง extends

<?php
class testClass extends mainClass

ทีนี้ทั้ง 2 class ของเราก็จะสืบมอดกันมาอย่างสมบูรณ์แล้ว คราวนี้ผมก็สามารถเรียก Method ของ mainClass ได้ซะที

public function testMethod()
{
   $oMainClass = new mainClass();
   $oMainClass->hello();
}

โดยผมทำการสร้าง Object ขึ้นมาก่อน แล้วก็เรียกไปที่ Method ของ mainClass อีกทีเพียงเท่านี้เวลาแสดงผลจริงก็จะได้ข้อมูลออกมาว่า  Hello PHP

Hello PHP

Hello PHP

ตอนนี้เราก็รู้วิธีการที่จะเรียกใช้งาน Class ผ่านทาง การสืบทอดแล้วนะครับ อยากให้ทุกคนที่พยายามจะเปลี่ยนตัวเองจากแนวทางของ  procedural มาเป็น OOP จริงๆไม่ได้ยากนักแต่ควรลืมกระบวนการคิดแบบเป็นลำดับขั้นตอนลงมาเรื่อยๆไปซะ แล้วคิดแต่เพียงว่าจะทำอะไรจากนี้ควรแยกออกมาเป็นชิ้นเป็นวัตถุๆไปจะดีกว่านะครับ

 

 

 

 

 

 

 

 

 

 

FORZA Admin Template With Angular

FORZA Admin Template With Angular

ใส่ความเห็น