PHP:差异b / w新自我和新对象()

时间:2014-12-31 10:36:06

标签: php oop

我正在观看PHP视频讲座。我的项目目录中有user类现在在一个静态函数中的教程中,它实例化了这样的

 private static function  instantiate($result){
 $object = new self;
 //here goes loop 
 }

和某个地方一样使用

$object= new user();

有人请指导第一个案例的概念吗new self

2 个答案:

答案 0 :(得分:2)

"自"是引用当前类的关键字。它只在课堂上提供。代码。

您可以使用它来调用您自己的类上的方法,但由于绑定,您还可以使用它来调用超类上的方法。

考虑以下示例:

class TestA {
  public static function makeNewInstance() {
    return new TestA();
  }
}

class TestB extends TestA {
}

现在,调用TestB :: makeNewInstance();将返回TestA的实例。 (TestB继承了该方法,但它直接链接到TestA,所以仍会返回)

与此相比:

class TestA {
  public static function makeNewInstance() {
    return new self();
  }
}

class TestB extends TestA {
}

现在,调用TestB :: makeNewInstance()将返回TestB的一个实例。 (由于self引用了活动类,并且你在TestB上调用它,因此" self"的内容现在是TestB而不是TestA。

希望能为您解释。否则,您的问题中可能会有更多细节有助于吸引更具体的答案。

答案 1 :(得分:0)

self指向编写它的类。请参阅What does new self(); mean in PHP?

$ object = new user(); //它使类用户的对象 - 在用户类

之外