您现在的位置是: 首页> PHP>PHP两个类的实例化方法:new static()和new self()的区别 所属分类:PHP

PHP两个类的实例化方法:new static()和new self()的区别

初柒先生 2019-09-23 10:09 191人已围观

简介PHP可以进行面向对象编程,我们在完成类的设计后需要对其进行实例化。

PHP可以进行面向对象编程,我们在完成类的设计后需要对其进行实例化。

类的实例化方法有两种方式:

(1)类内实例:顾名思义就是类定义内部的实例化,有两种方法new static()和new self()

(2)类外实例:指类使用时的实例化,一般用“new 类名”进行实例化

注:new static()是在PHP5.3版本中引入的新特性。

本文要介绍的是new static()和new self()的区别,首先这个两个方法都是实例化类,在类没有使用任何继承它们是没有区别的。

当类使用了继承就会显示区别来,我们通过下面这个例子说明:

<?php
//人
class People {
    public static function get_self_people() {
        return new self();
    }

    public static function get_static_people() {
        return new static();
    }
}
//学生
class Student extends People {
	
}
//小学生
class Pupil extends Student {
	
}

echo get_class(People::get_self_people());
echo get_class(People::get_static_people());

echo get_class(Student::get_self_people());
echo get_class(Student::get_static_people());

echo get_class(Pupil::get_self_people());
echo get_class(Pupil::get_static_people());

注:get_class()方法是用于获取实例所属的类名

输出结果:

People
People

People
Student

People
Pupil

通过上面这个例子我们可以看出:

(1)People类没有继承什么类,new static()和new self()实例化输出结果没有区别

(2)Student类继承People类,Pupil类继承Student类,它们输出略有不同

因此,我们可以得出结论:new self()实例化出来的是当前类(明面上的类),而new static()实例化出来的是初始类(不管继承多少次,只获取原始的类)

很赞哦! (1)

初柒先生 2019-09-23 10:09 191人已围观

相关文章

站点信息

  • 建站时间:2019-09-04
  • 网站名称:初柒先生
  • 主题模板《今夕何夕》
  • 文章统计:299条
  • 文章评论:490条
  • 统计数据百度统计
  • 微信公众号:初柒先生(chuqi_sir)
  • 微信扫二维码,关注我们吧!
搜索历史:
0.082423s