欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP创建对象的六种方式实例总结

程序员文章站 2023-11-27 14:20:16
本文实例讲述了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>';

运行结果:

PHP创建对象的六种方式实例总结