您现在的位置是: 首页> 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人已围观
相关文章
文章评论
猜你喜欢
