构造函数的作用是什么?为了让你更好的理解,我举工厂的例子开始讲起:
推荐教程:PHP视频教程
我们知道,在一个工厂里面,要生产同要求的产品,那么就需要CAD模具。如果引申到我们的PHP中,我们可以理解为类就是CAD模具,决定了产品的形状;而对象就是产品;要求(长度、宽度、高度、半径等等指标)就是类中的类的属性。
当我们要生产产品,首先我们要根据需求方明确该产品有哪些要求,比如是做一批长方形的产品(产品a,产品b,产品c),我们的CAD模具(类),要求是长、宽、高指标(类属性)。进而需要的是产品a,b,c,长、宽、高的各项指标的具体参数(类属性参数)。
假设你是工厂的技术员,你怎么操作CAD模具呢?
第一种方法:
class长方形产品a模具: { private $长=1.1m; private $宽=1.2m; private $高=1.5m; } $产品a=new class 长方形产品a(); class 长方形产品b模具: { private $长=1.4m; private $宽=1.7m; private $高=1.8m; } $产品b=new class 长方形产品b(); class 长方形产品c模具: { private $长=1.0m; private $宽=1.1m; private $高=0.9m; } $产品b=new class 长方形产品c();
第二种方法:用构造方法就是
class 长方形产品模具类: { private $长; private $宽; private $高; public function __construct(参数1, 参数2, 参数3){ $this->长 =参数1; $this->宽 =参数2; $this->高= 参数3; } 实例化各产品对象的时候,我们只需要 $产品a=new class长方形产品cad模具类(1.1m,1.2m,1.5m); $产品b=new class长方形产品cad模具类(1.4m,1.7m1.8m); $产品c=new class长方形产品cad模具类(1.1m,1.0m1.9m); ....
如果是生产不规则形状的产品,那么技术员要设定的cad模具(类)指标(类属性)就会很多,如果该批产品大小种类还很多的话(对象很多),需要设置很多的指标参数(类属性参数),显而易见后者第二种方法的工作效率会高很多。
也就是说构造方法__construct()实例化类对象的时候有很大的优势,一次建类,多次重复使用。在这里,我们也就明白了构造方法的好处是其可以接受参数,实例化对象时,为不同的对象设置不同的属性初始化值。