首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 物件導向封裝性:存取修飾符、魔術方法與資料保護實務

     編輯:PHP 綜合知識

封裝將資料與操作包裝在類別內部,透過存取修飾符控制可見性,保護資料完整性。

三種存取修飾符

修飾符類別外部繼承類別本類別
public✓✓✓
protected✗✓✓
private✗✗✓

基本規則

  • 方法無修飾符預設 public。
  • 屬性必須指定修飾符。
  • 方法互呼需用 $this->方法名()。

範例:Person 類別封裝隱私屬性

<?php
class Person {
    public $name; protected $age; private $salary;
    function __construct($name,$age,$salary){
        $this->name=$name; $this->age=$age; $this->salary=$salary;
    }
    function showInfo(){ echo $this->name."||".$this->age."||".$this->salary."<br/>"; }
    // 提供公用方法存取私有屬性
    function getSalary($user,$pass){
        if($user=="www.bianceng.cn" && $pass==123) return $this->salary;
        else echo "無權限查看薪資";
    }
    public function setAge($age){
        if($age>=1 && $age<=120) $this->age=$age;
        else echo "年齡範圍錯誤";
    }
    public function getAge(){ return $this->age; }
}
$p1=new Person("張三",30,1000);
echo $p1->name;           // 可存取
$p1->showInfo();          // 內部可存取所有
echo $p1->getSalary("www.bianceng.cn",123); // 經驗證存取
$p1->setAge(75); echo $p1->getAge();        // 受控修改與讀取
?>

魔術方法 __set / __get(不建議使用)

可攔截對不可見屬性的讀寫,但現代開發建議改用明確的 getter/setter 方法,提高程式碼可讀性與維護性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved