按书中的解释:构造方法是在生成对象时自动执行的成员方法,作用是初始化对象。现在,有两个问题如下:
初始化对象是什么意思?
直接将参数写到想要实现功能的成员方法中,运行的结果和有构造方法的一样,代码也没看到简化在哪儿,所以我就不明白构造方法的意义是什么?
问题一回答:对象初始化时候提供默认值,然后调用对象方法时候可以免去再次赋值
问题二回答设计模式中的单例模式需要私有的构造方法.
撸代码
<?php
class SinglePHP{
private static $_instance;
private function __construct($conf){
/* * */
}
public static function getInstance($conf){
if(!(self::$_instance instanceof self)){
self::$_instance = new self($conf);
}
return self::$_instance;
}
}
一说到php魔术方法,最先想到的就是构造和析构函数,那么,他们到底有什么神奇的地方,而被称为魔术方法,并被当做代表人物呢
以前,我也只是知道一些理论知识,今天,就和大家一起分析一下它们到底有什么作用:
一. 构造函数:
__construct( ): 有构造函数的类会在每次创建新对象时调用此函数,所以可以在此函数内做一些使用对象之前的初始化。
我最早接触到这个函数是在写登录的时候,会在公共控制器里创建一个构造函数,里面写验证登录session是否存在的逻辑代码,然后在每个控制器都继承这个公共控制器,会首先执行这个构造函数验证是否登录成功。(如果子类中定义了构造函数则不会暗中调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。)
构造函数就是在实例化类的时候就被运行的函数,可以有参数,也可以没有参数。构造函数主要用来在创建对象时初始化对象 即为对象成员变量赋初始值,比如说你的MyPc类,定义了$name,那么如果没有构造函数你在初始化MyPc类的时候$name的值就是空的,你可以定义一个构造函数来给$name一个值,因为很多时候我们并不允许某些对象变量的值是空的
二.析构函数:
__distruct( ): 1、PHP页面加载完成后,2、unset()类,3、变量指向别的对象或值时,4、exit()时被调用。
当PHP决定你的脚本不再与对象相关时,析构函数将被调用
<?php
class Person{ //定义一个叫Person的类
public $name; //声明共有的属性:名字
public function say(){ //声明共有的方法:说话
echo 'saying';
}
public function __construct(){ //固定的__construct声明构造函数
echo 'construct'; //在对象创建时输出
}
public function __destruct(){
echo 'destruct'; //对象销毁时输出
}
}
$a =new Person(); //输出construct
//待代码结束后输出 destruct
?>