【问题标题】:PHP : Difference b/w new self and new object() [duplicate]PHP:b / w new self和new object()的区别[重复]
【发布时间】:2014-12-31 10:36:05
【问题描述】:

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

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

在某处像这样使用

$object= new user();

有人请指导我关于第一个案例的概念,它说new self

【问题讨论】:

    标签: php oop


    【解决方案1】:

    “self”是引用当前类的关键字。它仅在类的代码中可用。

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

    考虑以下示例:

    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。

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

    【讨论】:

      【解决方案2】:

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

      $object=新用户(); // 它使用户类的对象在用户类之外

      【讨论】:

        猜你喜欢
        • 2014-02-10
        • 2012-03-10
        • 2012-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-04
        相关资源
        最近更新 更多