PHP面向对象:深入理解public、protected与private访问修饰符

半杯拿铁
半杯拿铁
发布时间:2026-10-14| 6人浏览过
原创

在PHP面向对象编程中,正确理解和使用 public、protected 和 private 是构建安全、可维护代码的基础。本文将解析这三种访问修饰符的权限范围及继承特性。

三大访问修饰符的定义

PHP提供三种访问级别来控制类成员(属性和方法)的可见性:

  • public(公共):最宽松的限制。如果不指定访问修饰符,默认即为 public。该成员可以在任何地方被访问,包括类内部、子类以及外部实例。
  • protected(受保护):中等限制。该成员仅在类内部及其子类中可以访问,外部实例无法直接操作。
  • private(私有):最严格的限制。该成员仅在定义它的类内部可见,子类无法继承或访问,外部更无法触及。

权限验证与继承演示

为了直观展示三者的差异,我们构建一个包含不同属性与方法的基础类,并观察其在子类的表现。

第1步:定义基础类

首先创建一个名为 Woman 的类,内部混合使用了三种修饰符:

class Woman{
    public $name = "gaojin";
    protected $age = "22";
    private $height = "170";
    
    function info(){
        echo $this->name;
    }
    
    private function say(){
        echo "这是私有的方法";
    }
}

第2步:尝试外部访问

如果我们在外部实例化该类并试图访问不同级别的成员,结果如下:

  • $w->name:成功输出(因为它是 public)。
  • $w->age:报错(protected 不可从外部访问)。
  • $w->height:报错(private 不可从外部访问)。
  • $w->say():报错(私有方法不可从外部调用)。

第3步:子类继承测试

创建子类 Girl 继承自 Woman,并在其方法中尝试访问父类成员:

class Girl extends Woman{
    function info(){
        echo $this->name;      // public: 正常输出
        echo $this->age;       // protected: 正常输出
        // echo $this->height; // private: 此行若取消注释将导致致命错误
    }
    
    function say(){
        // parent::say(); // 如果父类say是protected则可行,但此处为private,故无法调用
        echo "我是女孩";
    }
}

核心结论

总结各修饰符的行为逻辑:public 属性与方法对任何人开放;protected 仅对本类及子类开放,实现了“血缘内共享”;而 private 则是封闭的孤岛,仅限当前类自我消化。合理运用这些规则能有效隔离数据变动风险。

以上就是PHP面向对象访问修饰符的详细内容,更多关于PHP编程技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。