这个的每句话怎么理解。

来源:2-7 PHP类和对象之访问控制

旅行与读书

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

这个的每句话怎么理解。

写回答 关注

3回答

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


PHP进阶篇

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

181734 学习 · 2575 问题

查看课程

相似问题