二狗子啊
2018-03-24 15:00
$car = new Car(); echo $car->name; //调用对象的属性 echo $car->color; //错误 受保护的属性不允许外部调用 echo $car->price; //错误 私有属性不允许外部调用
其实就是封装,这样做比较安全,不容易给人修改,查查封装就右以理解了
这个要配合前面定义的类来理解
class Car { //定义公共属性 public $name = '汽车'; //定义受保护的属性 protected $corlor = '白色'; //定义私有属性 private $price = '100000'; }
在calss Car的花括号{}里面调用就是内部调用,在{}外面调用就是外部调用,只有public可以外部调用,所以才会出现第二个和第三个错误的现象!
class A { protected $name = 'aaa'; protected function getName() { return 'hello'; } public function say() { return $this->getName(); } } $a = new A(); echo $a->name; // error echo $a->getName(); // error echo $a->say(); // success
wish you understand !
在定义类的时候,有一个花括号{},在花括号里调用就属于内部调用,在花括号外面调用就属于外部调用。
首先类的属性有三种:public 、protected、private。
public可以在任何地方被调用,而受保护属性和私有属性则不一样。
私有属性private不允许外部调用,指的的是该属性只能在你声明的类中调用,你声明了Car这个类,就是只能在class Car{}中调用,离开这个类,就不能调用了。
如果实在要调用,可以使用友元函数来进行调用。
而受保护属性protected不仅可以在你声明的类中调用,还可以在它的子类中调用。
PHP进阶篇
181835 学习 · 2577 问题
相似问题