การกำหนดระดับการเข้าถึงตัวแปรหรือฟังก์ชั่นของ ภาษา PHP

PHP Knowledge เป็น บอร์ดรวามความรู้ php เน้นบทความ แนวทางการเขียนโปรแกรม บันทึกกันลืม เพื่อให้สมาชิกได้เขียนความรู้ที่ตัวเองมีให้สมาชิกท่านอื่นๆ ได้ เข้ามาอ่าน และ ไว้อ่านเองกันลืมด้วย

Moderator: mindphp, ผู้ดูแลกระดาน

pataponnew
PHP Hero Member
PHP Hero Member
โพสต์: 152
ลงทะเบียนเมื่อ: 03/05/2021 10:18 am

การกำหนดระดับการเข้าถึงตัวแปรหรือฟังก์ชั่นของ ภาษา PHP

โพสต์ที่ยังไม่ได้อ่าน โดย pataponnew »

การกำหนดตัวแปล(visibility) จะใช้กำหนดระดับการเข้าถึงตัวแปรหรือฟังก์ชั่นว่าเราจะสามารถใช้งานได้จากที่ไหนได้บ้าง โดยจะมีสามรูปแบบคือ
public จะเข้าถึงได้ทุกที่ทั้งจากภายใน Class และจากภายนอก Class
private จะเข้าถึงได้เฉพาะภายใน Class นี้เท่านั้น
protected จะเข้าถึงได้เฉพาะภายใน Class นี้ และภายใน Subclass ที่ extends หรือสืบทอดสมาชิกจาก Class นี้เท่านั้น

ตัวอย่างนะครับ

โค้ด: เลือกทั้งหมด

<?php

class Privacy
{

  public function myPublic()
  {
        return "I am Public";
  }
  private function myPrivate()
  {
        return "I am Private";
  }
  protected function myProtected()
  {
        return "I am Protected";
  }
  function output(){
  echo "".$this->myPublic()."<br/>";
  echo "".$this->myPrivate()."<br/>";
  echo "".$this->myProtected()."<br/>";


  }
}
$output = new Privacy();
$output -> output();
 ?>
จากโค้ดจะมีการประกาศคลาส Privacy นะครับ โดยMethod ในคลาสจะมีการกำหนดระดับการเข้าถึงสามรูปแบบด้วยกันก็คือ
public,private,protected ตามโค้ดเลยนะครับ

ค่าที่จะได้ออกมาก็คือ
การเเสดงค่าในคลาส
การเเสดงค่าในคลาส
bandicam 2021-05-07 17-29-05-951.jpg (21.24 KiB) Viewed 990 times
ที่เเสดงค่าออกมาครบทุกค่าก็เพราะว่า Method ทุกอันอยู่ในคลาสของมันเอง ซึ่งไม่ว่าจะเป็นpublic,private หรือ protected จะมีคุณสมบัติในการเรียกใช้ในคลาสของตัวเองทุกอันเลยครับ

เเต่ถ้าลองเรียกใช้นอกคลาสดูล่ะ!
ผมจะทำการสร้างคลาสPrivacy 2 นะครับโดยทำการสืบทอดคลาส Privacy ตามโค้ดเลยครับ

โค้ด: เลือกทั้งหมด

class Privacy2 extends Privacy
{

  function __construct()
  {
    echo "".$this->myPublic()."<br/>";
    echo "".$this->myProtected()."<br/>";
    echo "".$this->myPrivate()."<br/>";

  }
}
จากนั้นทำการรันโค้ดออกมานะครับ
การเเสดงค่าในคลาสที่สืบทอด
การเเสดงค่าในคลาสที่สืบทอด
bandicam 2021-05-07 17-40-40-264.jpg (57.28 KiB) Viewed 990 times
จะเห็นได้ว่า ฟังก์ชั่นในส่วนของ private จะมีการ Error นะครับ เพราะว่า คำสั่ง private จะสามารถเข้าถึงได้เฉพาะภายใน Class ของตัวเองเท่านั้นนะครับ
เราสามารถกำหนดระดับการเข้าถึงของตัว Method ได้ทั้งหมดเลยครับ เเต่ถ้าไม่มีการระบุระดับการเข้าถึง ค่าจะถูกกำหนดให้เป็น Public ครับ

อ้างอิง
http://marcuscode.com/lang/php/classes
http://www.freelancethai.net/forum/index.php?topic=107.0
https://sites.google.com/site/indystyle123/bth-thi-16-kar-kheiyn-porkaerm-cheing-watthu
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 52