📅  最后修改于: 2023-12-03 15:18:34.414000             🧑  作者: Mango
在 PHP 中,public、private 和 protected 是三个关键字,用于限制类属性和方法的访问级别。它们被称为访问修饰符。
public 是最常用的访问修饰符。当一个属性或方法被声明为 public 时,它可以被任何代码访问,包括类外部的代码。
class MyClass{
public $name;
public function sayHello(){
echo 'Hello, '.$this->name;
}
}
$obj = new MyClass();
$obj->name = 'PHP';
$obj->sayHello(); //输出:Hello, PHP
在上面的例子中,我们声明了一个 MyClass 类,它有一个 public 属性 $name 和一个 public 方法 sayHello(),它们可以被类外部的任何代码访问和调用。
private 是一种更为严格的访问修饰符。当一个属性或方法被声明为 private 时,它只能被在该类的内部访问和调用,而无法被类外部的代码访问。
class MyClass{
private $name;
private function sayHello(){
echo 'Hello, '.$this->name;
}
public function setname($name){
$this->name = $name;
}
public function getname(){
$this->sayHello();//只可以在类内部调用
}
}
$obj = new MyClass();
$obj->setname('PHP');
$obj->getname(); //输出:Hello, PHP
在上面的例子中,我们声明了一个 MyClass 类,它有一个 private 属性 $name 和一个 private 方法 sayHello(),它们只能被该类的其他方法访问和调用,并且无法被类外部的代码访问。
protected 与 private 类似,但是它允许子类访问和调用被保护的属性和方法。
class MyClass{
protected $name;
protected function sayHello(){
echo 'Hello, '.$this->name;
}
}
class TestClass extends MyClass{
public function setname($name){
$this->name = $name;
}
public function getname(){
$this->sayHello();//可以在子类里进行调用
}
}
$obj = new TestClass();
$obj->setname('PHP');
$obj->getname(); //输出:Hello, PHP
在上面的例子中,我们定义了两个类:MyClass 和 TestClass,MyClass 有一个 protected 属性 $name 和一个 protected 方法 sayHello(),它们可以被 TestClass 继承和使用。在 TestClass 中,我们使用了 setname() 方法来设置 $name 属性的值,并使用 getname() 方法来调用 sayHello() 方法。由于 sayHello() 方法是被保护的,所以只能在子类中访问和调用。
在 PHP 中,public、private 和 protected 是三个关键字,用于限制类属性和方法的访问级别。public 是最常用的访问修饰符,它可以被任何代码访问;private 是更为严格的访问修饰符,它只能在类的内部访问和调用;protected 是介于 public 和 private 之间的访问修饰符,它允许子类访问和调用被保护的属性和方法。通过合理的使用这些访问修饰符,我们可以更好地控制代码的访问和调用权限。