国字类型网站有哪些内容,外贸网页制作哪家好,重庆响应式网站平台,网站 意义我们在使用php代码新建对象的时候#xff0c;一般会用到new self与new static,那么它们在使用的时候区别在哪里#xff1f;先说说new static(),new static与new self一样#xff0c;在php代码中#xff0c;它是用来新建一个对象的.那么他们之间的不同之处在哪里呢#xff…我们在使用php代码新建对象的时候一般会用到new self与new static,那么它们在使用的时候区别在哪里先说说new static(),new static与new self一样在php代码中它是用来新建一个对象的.那么他们之间的不同之处在哪里呢new static与new self之间的不同在于在于新创建的是同一个类的实例与不同类的实例.如下面这段示例class newdx {public function hqnewself() {return new self();}public function hqnewstatic() {return new static();}}$newdx new newdx();echo get_class($newdx-hqnewself());echo get_class($newdx-hqnewstatic());?以上代码通过使用php自带的get_class()方法是来用于获取指定实例所属类名运行后可以得出无论他们调用的是hqnewself()函数还是hqnewstatic()函数其结果都为newdx然而当我们继续创建class newcl1 extends newdx {}class newcl2 extends newdx {}$newcl1 new newcl1();$newcl2 new newcl2();echo get_class($newcl1-hqnewself());echo get_class($newcl1-hqnewstatic());echo get_class($newcl2-hqnewself());echo get_class($newcl2-hqnewstatic());以上代码表示newdx类有两个子类由于newdx类的hqnewself()和hqnewstatic()是公共的所以在子类中依旧继承了这两方法。其运行结果依次为newdx、newcl1、newdx、newcl2无论是子类newcl1还是子类newcl2调用hqnewself()即new self()其返回的对象都是类newdx而hqnewstatic()即 new static(),则返回了调用者子类的实例名称.他们的区别在类的继承中才会显示出来当它们没有任何继承那么使用他们没有什么区别。new self()返回的实例都是同一个类的实例而new static()则是由调用的子类决定的.