加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP创建对象有多少方法,具体代码指什么

发布时间:2023-04-24 13:47:01 所属栏目:PHP教程 来源:
导读:本篇内容介绍了“PHP创建对象有多少方法,具体代码是什么”的有关知识,在实际项目的操作过程或是学习过程中,不少人都会遇到这样的问题,接下来就让小编带大家学习一下如何处理这些情况吧!希望大家仔细阅
本篇内容介绍了“PHP创建对象有多少方法,具体代码是什么”的有关知识,在实际项目的操作过程或是学习过程中,不少人都会遇到这样的问题,接下来就让小编带大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
 
创建对象实例:
 
<?php
 
/**
 
 * PHP创建对象的六种方式
 
 */
 
class Person{
 
  private $name = 'bruce';
 
  public function getName(){
 
    return $this->name;
 
  }
 
  public static function getObjBySelf(){
 
    return new self();
 
  }
 
  //动态延迟绑定,能识别调用者
 
  public static function getObjcByStatic(){
 
    return new static();
 
  }
 
}
 
//Person子类 Teacher
 
class Teacher extends Person{
 
  public static function getObjByParent(){
 
    return new parent();
 
  }
 
}
 
//1、new 类名();创建对象
 
$obj1 = new Person();//等价于写法 $obj1 = new Person;
 
echo '类名:'.get_class($obj1).'<br>';
 
echo $obj1->getName().'<hr>';

//2、将类名字符串赋值给一个变量,通过变量创建
 
$clsName = 'Person';
 
$obj2 = new $clsName();
 
echo '类名:'.get_class($obj2).'<br>';
 
echo $obj2->getName().'<hr>';
 
//3、通过对象实例创建对象
 
$obj3 = new $obj2();
 
echo '类名:'.get_class($obj3).'<br>';
 
echo $obj3->getName().'<hr>';
 
//4、通过 new self()
 
//$obj4 = (new $obj3())->getObjBySelf();
 
$obj4 = Person::getObjBySelf();
 
echo '类名:'.get_class($obj4).'<br>';
 
echo $obj4->getName().'<hr>';
 
//5、通过 new parent()
 
$obj5= Teacher::getObjByParent();
 
echo '类名:'.get_class($obj5).'<br>';
 
echo $obj5->getName().'<hr>';
 
//6、通过 new static();
 
$obj6 = Person::getObjcByStatic();
 
echo '类名:'.get_class($obj6).'<br>';//类名:Person
 
echo $obj6->getName().'<hr>'; //bruce
 
//当用子类去调用时候,发现static自动识别当前调用者(静态延迟绑定),返回当前调用者对象
 
$obj7 = Teacher::getObjcByStatic();
 
echo '类名:'.get_class($obj7).'<br>';//类名:Teacher
 
echo $obj7->getName().'<hr>';//bruce
 
$obj8 = Person::getObjBySelf();
 
echo '类名:'.get_class($obj8).'<br>';//类名:Person
 
echo $obj8->getName().'<hr>';
 
//new self()在子类中调用依旧返回原来父类的绑定
 
$obj9 = Teacher::getObjBySelf();
 
echo '类名:'.get_class($obj9).'<br>';//类名:Person
 
echo $obj9->getName().'<hr>';
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!