设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-12-26 08:38 所属栏目:121 来源:互联网
导读:本篇内容介绍了PHP创建对象有多少方法,具体代码是什么的有关知识,在实际项目的操作过程或是学习过程中,不少人都会遇到这样的问题,接下来就让小编带大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 创建对象实例: ?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>';
 
  运行结果:

 
 

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读