PHP OOP public、protected 和 private 关键字

简介

在面向对象编程(OOP)中,访问控制是一个重要的概念。PHP支持三种访问控制修饰符:public,protected和private。这些关键字定义了类属性或方法的可见性,即哪些代码可以访问它们。

Public

Public 成员是最不受限制的一种,任何地方都可以访问到,包括外部类、子类和对象实例。在PHP中,如果没有指定访问控制修饰符,则默认为public。

示例:

class MyClass {
    public $publicVar = 'Public variable';
}
$obj = new MyClass();
echo $obj->publicVar; // 可以被访问

Protected

Protected 成员只能在当前类和子类中访问。外部代码不能直接访问protected属性或方法,但是它们的子类可以。

示例:

class MyClass {
    protected $protectedVar = 'Protected variable';
}
class ChildClass extends MyClass {
    function printVar() {
        echo $this->protectedVar; // 在子类中可以被访问
    }
}
$obj = new ChildClass();
echo $obj->printVar(); // "Protected variable"

Private

Private 成员只能在当前类内部访问。外部代码、子类或对象实例都不能直接访问private属性或方法。但是,它们可以通过public或protected的函数间接地进行访问。

示例:

class MyClass {
    private $privateVar = 'Private variable';
    public function getPrivateVar() {
        return $this->privateVar;
    }
}
$obj = new MyClass();
echo $obj->getPrivateVar(); // "Private variable"

总结

选择正确的访问控制修饰符非常重要,它可以提高代码的安全性和维护性。Public成员应该被广泛地使用,而private和protected成员则应该根据需要进行限制。

参考文献