• PHP8中伪变量“$this->”和操作符“::”的使用-PHP8知识详解


    对象不仅可以调用自己的变量方法,也可以调用类中的变量和方法。PHP8通过伪变量“$this->”和操作符“::”来实现这些功能。

    1.伪变量“$this->”

    在通过对象名->方法调用对象的方法时,如果不知道对象的名称,而又想调用类中的方法,就要用伪变量“$this->”。伪变量“$this->”的意思就是本身,成员方法属于哪个对象,$this 引用就代表哪个对象,主要作用是专门完成对象内部成员之间的访问。

    使用伪变量“$this->”参考代码

    1. class myexample {
    2.     function fun(){                                    //定义成员方法
    3.         if(isset($this)){                             //判断变量$this是否存在
    4.             echo "变量\$this的值是:".get_class($this); //如果存在则输出$this所属类名
    5.         }else{
    6.             echo "变量\$this不存在!";
    7.         }
    8.     }
    9. }
    10. $myexam=new myexample();                            //类的实例化
    11. $myexam->fun();             //类的实例化并传递参数
    12. ?>

    以上代码在php8中的运行结果如下:

    变量$this的值是:myexample
    

    2、操作符“::”

    操作符“::”可以在没有任何声明实例的情况下访问类中的成员,语法格式如下:

    关键字::变量名/常量名/方法名
    

    其中关键字主要包括parentself和类名 3种。

    (1)、parent关键字:表示可以调用父类中的成员变量、常量和成员方法。

    (2)、self关键字:表示可以调用当前类中的常量和静态成员

    (3)、类名关键字:表示可以调用本类中的常量、变量和方法。

    使用操作符“::”参考代码:

    1.     class Fruit {
    2.         const NAME="水果";                          //定义常量NAME
    3.         function __construct(){                     //定义构造方法
    4.             echo "本商城销量最高的商品类别是:".Fruit::NAME."
      "
      ; //输出常量的默认值
    5.         }
    6.     }
    7.     class MyFruit extends Fruit {                       //定义Fruit类的子类
    8.         const NAME="葡萄";                              //定义常量NAME
    9.         function __construct()                          //定义子类的构造方法
    10.         {
    11.             parent::__construct();                      //调用父类的构造方法
    12.             echo "水果中销量最高的是:".self::NAME." "; //输出本类的常量NAME
    13.         }
    14.     }
    15.     $f=new MyFruit();                                   //类的实例化
    16. ?>

    以上代码在PHP8中的运行结果如下:

    本商城销量最高的商品类别是:水果

    水果中销量最高的是:葡萄

    到此为止,对象不仅可以调用自己的变量和方法,也可以调用类中的变量和方法。PHP8通过伪变量“$this>”和操作符“::”来实现这些功能就讲解完毕了。

  • 相关阅读:
    甘露糖修饰阿奇霉素|mannose-Azithromycin|甘露糖-聚乙二醇-阿奇霉素
    【tomcat】java.lang.Exception: Socket bind failed: [730048
    Leetcode 1619. 删除某些元素后的数组均值
    Perl 中的循环结构
    基于Java毕业设计高校共享机房管理系统的设计与实现源码+系统+mysql+lw文档+部署软件
    #gStore-weekly | gStore最新版本0.9.1之BIND函数的使用
    vue3.0项目实战系列文章 - 使用周期函数
    广东新型制造类企业源代码防泄密方案
    59Redis高可用持久性
    Mysql 快速入门指南
  • 原文地址:https://blog.csdn.net/u010292470/article/details/133251401