问答详情
源自:2-7 PHP类和对象之访问控制

这个的每句话怎么理解。

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(); //通过静态方法来获得一个实例

这个的每句话怎么理解。

提问者:旅行与读书 2018-10-02 19:48

个回答

  • 慕丝8546819
    2021-01-08 17:07:02

    私有构造方法  你就可以理解为 因为构造方法是实例化后无论你调不调用 你都会运行的  但是它现在私有了 别的类不能用,所以导致不能实例化 只能静态调用

  • qq_淡然_75
    2018-12-12 17:17:56

    在设计模式中有只有单态模式,就是利用私有构造实现的,构造方法私有化,就不能通过new object();来实现,只能通过内本身的静态方法去实现构造 self::construct();

  • 慕粉2208578535
    2018-10-09 17:54:13

    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(); //通过静态方法来获得一个实例