(资料图)
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访问控制表示对象属性和方法只能在类内部访问。这意味着,在类的外部无法直接访问或修改私有属性或方法。例如:
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访问控制表示对象属性和方法只能在类内部和其子类中访问。这意味着,类的外部无法直接访问或修改受保护的属性或方法。例如:
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属性。
标签: