一直搞不懂 什么时候使用该使用public private protected哪个 网上很多形象的例子也都懂 只是说明了怎么用 但是没有说具体什么时候用哪个 为什么不都用public?自己写的类都是自己用 如果都用public 在实际开发中这样会出什么问题吗?一直搞不懂这个问题
class Woman{
public $name = "gaojin";
protected $age = "22";
private $height = "170";
public function info(){
echo $this->name;
}
}
$w = new Woman();
echo $w->info();
echo $w->name;
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
现在我们举个例子:有个类实现了一个功能,做算术除法运算。
其中我们先定义变量a和b都为0;
然后实现了一个设置他们值的方法,同时输出计算结构,计算的过程由另一个compute方法实现。
现在正常该这么用这个类:
现在我们的compute方法是private,如果外面这么调用:
那么必然发生错误。
现在,如果我们把compute方法设置为public。
如果有个人他这么调用
问题出现了。由于开始我们给变量a和b都设置了值为0,那么除数岂不是出现了0.更加容易出错。
所以一个类中一些方法有必要隐藏起来不给外面人调用。
拿一个工厂举例子,你作为一工厂老板,你的专利技术,自然不想被别人看到,以免被伪造的可能。所以你用private修饰,这个就只有工厂(类)里面能使用。然后就是protected,你工厂经营的不错,开了蛮多分店,所以自然的,你总工厂和你的子工厂,当然都直到并且能使用你这项专利技术。然后就是public,一些无关紧要,或者可以让别人仿造或者大众化的技术或产品,其它人都可以从你这里得到,这样说不知道你理解不?
PHP文档:访问控制
PHP:面向对象这个去找“访问控制”那段
直接去搜PHP 访问控制。
简单来说,构建一个类时,对外提供的调用接口用public,用到的数据变量或者function不是接口的就要声明private,如果涉及到多个类有了继承关系,子类需要继承或者父类需要访问的,声明为protected。
其实这个算是一种设计的规范吧。这个在团队开发比较常见。虽然实现功能,怎么都行,但是团队互相规范就是依靠代码来实现了。我举个通俗的例子来说把:
假设A要问B取个值回来,B的要求就是要A听过a,b两个参数;
对于A而言,B只要开放给A的就两个,一个赋值参数;一个返回参数;至于B里面一系列的运算逻辑就没必要给A了。怕A乱用。毕竟每个人的思维不一样,写法也不一样。
public自己,子类,外部都可以访问protected受保护的类,自己,和与自己相关的链上的都可以访问(不管是子类还是其父类),外部不能访问private只能自己访问