当前位置:频道 > 正文

PHP面向对象-访问控制

2023-04-28 13:39:14  来源:腾讯云


(相关资料图)

public访问控制

public访问控制是最常用的一种,它表示对象属性和方法可以在任何地方访问,包括类的外部。例如:

phpCopy codeclass Person {    public $name;    public function greet() {        echo "Hello, my name is " . $this->name;    }}$person = new Person();$person->name = "John";$person->greet(); // 输出 "Hello, my name is John"

在上面的示例中,$name属性和greet()方法都被声明为public,因此可以从类的外部访问。在创建新的Person对象后,可以使用$person->name属性设置$name属性的值,并调用$person->greet()方法输出相应的消息。

private访问控制

private访问控制表示对象属性和方法只能在类内部访问。这意味着,在类的外部无法直接访问或修改私有属性或方法。例如:

class Person {    private $name;    public function setName($name) {        $this->name = $name;    }    public function greet() {        echo "Hello, my name is " . $this->name;    }}$person = new Person();$person->setName("John"); // 正确$person->greet(); // 报错,因为$name是私有属性,无法从外部访问

在上面的示例中,$name属性被声明为private,因此无法从类的外部直接访问。相反,可以通过一个名为setName()的public方法来设置$name属性的值,并通过$person->greet()方法输出相应的消息。

protected访问控制

protected访问控制表示对象属性和方法只能在类内部和其子类中访问。这意味着,类的外部无法直接访问或修改受保护的属性或方法。例如:

class Person {    protected $name;    public function setName($name) {        $this->name = $name;    }}class Employee extends Person {    public function greet() {        echo "Hello, my name is " . $this->name;    }}$employee = new Employee();$employee->setName("John"); // 正确$employee->greet(); // 输出 "Hello, my name is John"

在上面的示例中,$name属性被声明为protected,因此无法从类的外部直接访问。相反,可以通过一个名为setName()的public方法来设置$name属性的值,并通过Employee类中的greet()方法输出相应的消息。由于Employee类是Person类的子类,因此可以在子类中访问protected属性。

关键词:

推荐阅读

日全食过程 日全食对人类和地球的影响有哪些?

日全食过程可以包括以下五个阶段:初亏、食既、食甚、生光、复原1 初亏因为月亮从西向东绕着地球转,所以日总是从太阳圆形表面的西边开始。 【详细】

海兔的名字怎么来的?海兔是鱿鱼吗?

海兔不是长在陆地上的兔子,而海兔是海里的软体动物,可以在海兔吃。沿海的渔民一般在海兔,晒干,可以在海兔直接晒干,或者在海兔蒸熟。海 【详细】

苹果CEO去年薪酬超1400万美元 苹果高级管理人员的工资是多少?

苹果CEO去年薪酬超1400万美元根据美国科技博客MacBrothers的报道,苹果公司提交给美国证券交易委员会(SEC)的2020年委托书显示,苹果公司CEO 【详细】

毅力号录下了来自火星的声音 科学家如何采集宇宙中的声音?

毅力号录下了来自火星的声音当地时间2月22日,NASA(美国国家航空航天局)发布了毅力号火星车录下的首段来自火星的音频。此外,NASA还公布了 【详细】

将禁用不可降解塑料袋 可以使用那些塑料袋替代品呢?

将禁用不可降解塑料袋国家发改委、生态环境部等九部门联合印发《关于扎实推进塑料污染治理工作的通知》,提出自明年1月1日起,在直辖市、省 【详细】

关于我们  |  联系方式  |  免责条款  |  招聘信息  |  广告服务  |  帮助中心

联系我们:85 572 98@qq.com备案号:粤ICP备18023326号-40

科技资讯网 版权所有