__construct()
: 是PHP内置的构造函数,实例化之前 PHP 解析引擎自动调用,做一些初始化的工作或者外部服务器检测的工作。在实例化对象之前需要做的工作都写在这里
init()
方法一般都是自己定义的,可以随便写名字,一般会在__construct()
中写 调用。功能和__construct()
差不多但是需要自己写调用, 其实就是普通方法,只是这个方法大家一般默认都是用来初始化东西的。
如果将 __construct
定义为 protected 那么就不能直接实例化了,需要添加一个额外的入口,这个入口一般是静态方法public static function instance
<?php
class Test {
public function init(array $config) {
echo "3: init..... \n";
var_dump($config,);
}
protected function __construct(array $config = array()) {
echo "2: __construct ..... \n";
phpversion() > "5.3" || exit("版本过低,请升级版本");
$this->init($config);
}
public function instance($config = array()) {
echo "1: instance ..... \n";
return new self($config);
}
}
$config = array("test"=>1);
$test = Test::instance($config);
var_dump($test);
如果不需要参数只需要将所有的参数$config去掉都好了
结果
1: instance .....
2: __construct .....
3: init.....
array(1) {
'test' =>
int(1)
}
class Test#1 (0) {
}
class Singleton
{
/**
* Description:(1)静态变量,保存全局实例,跟类绑定,跟对象无关
* (2)私有属性,为了避免类外直接调用 类名::$instance,防止为空
*/
private static $instance;
/**
* Description:数据库连接句柄
*/
private $db;
/**
* Description:私有化构造函数,防止外界实例化对象
*/
private static function __construct()
{
}
/**
* Description:私有化克隆函数,防止外界克隆对象
*/
private function __clone()
{
}
/**
* Description:静态方法,单例访问统一入口
* @return Singleton:返回应用中的唯一对象实例
*/
public static function GetInstance()
{
if (!(self::$instance instanceof self))
{
self::$instance = new self();
}
return self::$instance;
}
/**
* Description:获取数据库的私有方法的连接句柄
*/
public function GetDbConnect()
{
return $this->db;
}
}