zoukankan      html  css  js  c++  java
  • PHP创建对象的6种方式

    创建对象实例:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    <?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>';

    运行结果:

     

     能掌握以上技术这些人必然具备在技术上有独当一面的能力,从一个 Coder 逐步走向 CTO 或是 架构师。为了大家能够顺利进阶高级、架构师,我特地为大家准备了一套精品PHP架构师教程,适合1-5年内PHP开发人员,顺利突破 25K+ 的薪资。

     

    找管理领取进阶学习路线和视频文档资料即可

    点此链接申请加入Swoole官方群:正在跳转

  • 相关阅读:
    字符串去特定字符
    字符串的查找删除
    输出梯形
    元素节点的 innerText、innerHTML、outerHTML、outerText
    JavaScript DOM 特殊集合Collection
    Collection 访问方式
    JS Browser BOM
    异常
    JCBD
    try-with-resources 方式关闭注意事项
  • 原文地址:https://www.cnblogs.com/heyue0117/p/11825361.html
Copyright © 2011-2022 走看看