Php 这类函数背后的推理?

Php 这类函数背后的推理?,php,oop,Php,Oop,以面向对象的方式学习PHP,我经常遇到这样的人 public function getUsername() { return $this->username; } 这背后有什么安全理由吗?而不是直接调用类的username属性?为什么要围绕函数获取属性 这种类型的函数用于访问私有或受保护类成员。您不能直接在类的外部访问它们,因为它们只能在类的内部访问。那么,如果您想访问private成员,您会怎么做?答案是这样的 让我们举一个例子- class A {

以面向对象的方式学习PHP,我经常遇到这样的人

    public function getUsername() {
    return $this->username;
     }

这背后有什么安全理由吗?而不是直接调用类的username属性?为什么要围绕函数获取属性

这种类型的
函数
用于访问
私有
受保护
类成员。您不能直接在
类的外部访问它们,因为它们只能在
类的内部访问。那么,如果您想访问
private
成员,您会怎么做?答案是这样的

让我们举一个例子-

class A {
    private $x;
    public $y;
    public function test() {
        echo $this->x;
    }
}

$obj = new A();

$obj->x; // Error : You can not access private data outside the class

$obj->y; // Its fine

$obj->test(); // it will print the value of $x

Hope this will help.

在OOP中,类应该隐藏其实现细节,只提供必要的公共函数。用户更关心功能而不是细节。

例如,您有类测试。您使用的是对属性的直接访问,您有100个位置,如$obj->date='now'等

class Test {
    public $date;
}
但若在更新值或修改输入值之前需要插入一些代码,那个该怎么办呢?在这种情况下,您必须找到该属性的所有用法并对其进行更新。但是如果您要使用getter/setter,您可以在其中插入一些代码

class Test {
    private $date;
    public getDate() { return $this->date; }
    public setDate($date) {
        // here some modification value or something else
        $this->date = $date;
    }
}

一个简单的原因是您正在编写一段代码,并且希望防止用户覆盖对象实例中的值(配置数据就是一个很好的例子)

以您所述的方式编写函数还提供了一个标准接口,这在开发复杂程序时是必不可少的。若有一个开发团队只使用一个类,而不定义对变量的访问,那个就太疯狂了

下面是对PHP OOP基础知识的一个很好的解释,并解释了
private
public
protected

我想看看你想如何在没有该方法的情况下从类外访问私有属性。尝试学习