第 4 章 · 面向对象 · 第 4.1 课
类与对象
类是一张图纸,描述一类东西有哪些数据(属性)和能做什么(方法)。对象是照着图纸造出来的具体实例。用 new 创建对象,用 -> 访问它的属性和方法。
在类的内部,$this 指“当前这个对象”。__construct 是构造函数,new 的时候自动调用,通常用来给属性赋初值。
构造器属性提升(PHP 8)
在构造函数的参数前面直接写 public、private 等修饰符,PHP 会自动创建同名属性并赋值,省掉一大段样板代码。下面的 Point 和上面的写法效果一样。
封装:public 和 private
public:任何地方都能访问。private:只有类自己内部的代码能访问。
把数据设为 private,只通过方法去修改,类就能保证数据始终合法。下面的银行账户不允许存入负数,外面的代码也没办法直接把余额改掉。
对象是“引用”
把对象赋给另一个变量时,两个变量指向同一个对象,这和数组的复制不同。需要一份独立的副本时用 clone。
选择题
类的方法内部,要访问当前对象的 name 属性,应该怎么写?
练习 1
长方形
已通过写一个 Rectangle 类:
- 构造函数接收宽
$width和高$height(浮点数) area()返回面积perimeter()返回周长
练习 2
可以链式调用的计数器
已通过写一个 Counter 类:
- 私有属性
$count,初始为 0,外部不能直接访问 increment()让计数加 1,并返回$this,这样就能连着调用getCount()返回当前计数
$c = new Counter();
echo $c->increment()->increment()->getCount(); // 2