旅行与读书
2018-10-02 19:48
class Car { private function __construct() { echo 'object create'; } private static $_object = null; public static function getInstance() { if (empty(self::$_object)) { self::$_object = new Car(); //内部方法可以调用私有方法,因此这里可以创建对象 } return self::$_object; } } //$car = new Car(); //这里不允许直接实例化对象 $car = Car::getInstance(); //通过静态方法来获得一个实例
这个的每句话怎么理解。
私有构造方法 你就可以理解为 因为构造方法是实例化后无论你调不调用 你都会运行的 但是它现在私有了 别的类不能用,所以导致不能实例化 只能静态调用
在设计模式中有只有单态模式,就是利用私有构造实现的,构造方法私有化,就不能通过new object();来实现,只能通过内本身的静态方法去实现构造 self::construct();
class Car { private function __construct() { //构造方法在被调用直接加载,私有的构造方法,不允许直接实例化对象, 通过静态方法来获得一个实例! echo 'object create'; } private static $_object = null; //常量 public static function getInstance() { //声明一个静态的方法,用来实例化构造函数。 if (empty(self::$_object)) { self::$_object = new Car(); //内部方法可以调用私有方法,因此这里可以创建对象 } return self::$_object; //这里都不懂回去再学一次 } } //$car = new Car(); //这里不允许直接实例化对象 $car = Car::getInstance(); //通过静态方法来获得一个实例
PHP进阶篇
181835 学习 · 2577 问题
相似问题