插件窝 干货文章 php中类的访问修饰符有哪些

php中类的访问修饰符有哪些

访问 子类 可以 成员 413    来源:    2025-03-16

在PHP中,类的访问修饰符用于控制类成员(属性和方法)的可见性和访问权限。PHP提供了以下几种访问修饰符:

  1. public(公共)

    • 公共成员可以在类的内部、外部以及子类中访问。
    • 这是默认的访问级别,如果没有指定访问修饰符,成员将被视为public
    class MyClass {
       public $publicProperty = 'Public Property';
       public function publicMethod() {
           echo 'Public Method';
       }
    }
    
    $obj = new MyClass();
    echo $obj->publicProperty; // 可以访问
    $obj->publicMethod(); // 可以访问
    
  2. protected(受保护)

    • 受保护成员只能在类的内部和子类中访问,不能在类的外部直接访问。
    • 通常用于希望在子类中继承和使用的成员。
    class MyClass {
       protected $protectedProperty = 'Protected Property';
       protected function protectedMethod() {
           echo 'Protected Method';
       }
    }
    
    class ChildClass extends MyClass {
       public function accessProtected() {
           echo $this->protectedProperty; // 可以在子类中访问
           $this->protectedMethod(); // 可以在子类中访问
       }
    }
    
    $obj = new ChildClass();
    $obj->accessProtected(); // 可以访问
    // echo $obj->protectedProperty; // 错误:不能在类外部直接访问
    // $obj->protectedMethod(); // 错误:不能在类外部直接访问
    
  3. private(私有)

    • 私有成员只能在定义它们的类的内部访问,不能在类的外部或子类中访问。
    • 通常用于不希望被外部或子类访问的成员。
    class MyClass {
       private $privateProperty = 'Private Property';
       private function privateMethod() {
           echo 'Private Method';
       }
    
       public function accessPrivate() {
           echo $this->privateProperty; // 可以在类的内部访问
           $this->privateMethod(); // 可以在类的内部访问
       }
    }
    
    $obj = new MyClass();
    $obj->accessPrivate(); // 可以访问
    // echo $obj->privateProperty; // 错误:不能在类外部直接访问
    // $obj->privateMethod(); // 错误:不能在类外部直接访问
    

总结

  • public:成员可以在任何地方访问。
  • protected:成员可以在类的内部和子类中访问。
  • private:成员只能在定义它们的类的内部访问。

这些访问修饰符帮助开发者控制类的封装性,确保类的内部实现细节不会被外部代码随意访问或修改。