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

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

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新的开始 2017-02-14 20:37

个回答

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

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

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

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