PHP 访问修饰符2025 年 4 月 17 日 | 6 分钟阅读 PHP 将“public”、“private”和“protected”这几个术语称为“访问修饰符”。这些关键字控制类属性和方法的可见性或可访问性。在声明成员变量和指定成员函数时,会在其中一个术语前加上前缀。 PHP 的访问修饰符这些关键字决定了类成员是自由访问、条件访问还是被 PHP 代码禁止访问。 Public - 类成员可以通过对象引用从任何地方(包括类范围之外)进行访问。这些关键字决定了 PHP 代码对类成员是具有条件访问、禁止访问还是授予自由访问。
数据封装的概念是面向对象编程范例的基础。它描述了一个将对象的属性或数据成员保存在类外部环境无法访问的系统,只允许通过类的特定方法或 函数进行受限访问。 面向对象编程中的访问控制为了实现封装,类的所有方法都设置为 public,而其数据成员则设置为 private。 ![]() 访问修饰符在面向对象编程中使用,主要体现在如上图所示的私有和公共成员与类外部代码的交互方式。 私有数据只能由类本身访问。红色的“X”表示私有成员不能被类外部的代码直接访问。 通过对象引用,公共函数可以从类外部访问。通常使用公共函数来安全地访问私有信息。面向对象编程的一个基本原则——封装——正是通过对公众隐藏私有属性得以实现的。 公共PHP 默认将类成员(包括成员变量和成员函数)设置为 public。 示例立即执行输出 Title: PHP Basics | Price: 380 私有如前所述,为了遵循封装原则,成员 变量不应直接可访问。数据成员只应可供方法访问。因此,我们必须将方法设置为 public,将成员变量设置为 private。 示例立即执行输出 Title: PHP Basics Price: 380 最后一行,echo "Title : $b1->title Price: $b1->price"; 这将导致一个致命错误,因为 title 和 price 是私有的,而您正试图在类外部直接访问它们,这是不允许的。 Protected在类 继承的情况下,授予类成员受保护访问的效果是有效的。我们知道私有成员无法从任何地方访问类,但公共成员可以从任何地方访问它。 Protected 关键字阻止了任何其他环境的访问,但允许同一类及其派生类的对象访问。 在 Book 类示例中,我们将 title 成员设置为 protected,而将 price 保持为 private。 由于该对象属于同一类,PHP 允许访问这两个成员变量。 应该添加一个继承了 Book 类的 mybook 类。 由于子类继承了父类的 public 和 protected 成员,因此其对象仍然可以访问成员变量。 然而,构建一个 getmytitle() 函数,尝试访问 Book 类的受保护的 title 成员字段,并将 mybook 类定义为一个独立的类(而不是 Book 类的扩展)。 当 getmytitle() 函数尝试打印 Book 对象的 title 时,会显示错误消息 Cannot access protected property Book::$title。 示例立即执行输出 Fatal error: Uncaught Error: Cannot access protected property Book::$title PHP 中访问修饰符的区别
示例立即执行输出 Welcome John Doe Your current balance is 10000 Calculating Interest Annual Interest is 500 Account Holder Name is John Doe Account Balance is 10000 Pin Code is 1234 下一个主题PHP 中的 Final 关键字 |
我们请求您订阅我们的新闻通讯以获取最新更新。