public static function getInstance() { 这里可以不用静态方法吗?

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

new新的开始

2017-02-14 20:37

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

写回答 关注

2回答

  • ANARKHH
    2017-02-14 20:48:54
    已采纳

    这里必须用静态方法,如果是非静态方法的话必须通过将类实例化成一个对象后才能够调用,而这里的构造函数又被设置成private权限,无法在外部直接实例化,所以必须设置为静态才能实现代码的功能。

    懒惰的马仔3...

    是因为静态方法不需要实力化,所以才这么生成一个对象吗?

    2017-02-28 16:57:10

    共 3 条回复 >

  • ANARKHH
    2017-02-15 15:15:38

    $car = Car::getInstance() 这个语句是调用静态方法的,你这么设置就没法调用了

    会喷火的大怪... 回复new新的开...

    那你这个$car又是哪里来的

    2017-05-05 11:42:49

    共 6 条回复 >

PHP进阶篇

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

181835 学习 · 2577 问题

查看课程

相似问题