在PHP7之后,PHP中加入了匿名类的特性。匿名类和匿名方法让PHP成为了更现代化的语言,也让我们的代码开发工作越来越方便。我们先来看看匿名类的简单使用。// 直接定义

$objA = new class

{

public function getName()

{

echo "I'm objA";

}

};

$objA->getName();

// 方法中返回

function testA()

{

return new class

{

public function getName()

{

echo "I'm testA's obj";

}

};

}

$objB = testA();

$objB->getName();

// 作为参数

function testB($testBobj)

{

echo $testBobj->getName();

}

testB(new class{

public function getName()

{

echo "I'm testB's obj";

}

});

一次性给出了三种匿名类的使用方法。匿名类可以直接定义给变量,可以在方法中使用return返回,也可以当做参数传递给方法内部。其实,匿名类就像一个没有事先定义的类,而在定义的时候直接就进行了实例化。// 继承、接口、访问控制等

class A

{

public $propA = 'A';

public function getProp()

{

echo $this->propA;

}

}

trait B

{

public function getName()

{

echo 'trait B';

}

}

interface C

{

public function show();

}

$p4 = 'b4';

$objC = new class($p4) extends A implements C

{

use B;

private $prop1 = 'b1';

protected $prop2 = 'b2';

public $prop3 = 'b3';

public function __construct($prop4)

{

echo $prop4;

}

public function getProp()

{

parent::getProp();

echo $this->prop1, '===', $this->prop2, '===', $this->prop3, '===', $this->propA;

$this->getName();

$this->show();

}

public function show()

{

echo 'show';

}

};

$objC->getProp();

匿名类和普通类一样,可以继承其他类,可以实现接口,当然也包括各种访问控制的能力。也就是说,匿名类在使用方面和普通类并没有什么不同。但如果用get_class()获取类名将是系统自动生成的类名。相同的匿名类返回的名称当然也是相同的。// 匿名类的名称是通过引擎赋予的

var_dump(get_class($objC));

// 声明的同一个匿名类,所创建的对象都是这个类的实例

var_dump(get_class(testA()) == get_class(testA()));

那么匿名类中的静态成员呢?当然也和普通类一样,静态成员是属于类而不是实例的。

// 静态变量

function testD()

{

return new class{

public static $name;

};

}

$objD1 = testD();

$objD1::$name = 'objD1';

$objD2 = testD();

$objD2::$name = 'objD2';

echo $objD1::$name;

当类中的静态变量修改时,所有类实例的这个静态变量都会跟着变化。这也是普通类静态成员的特性。

php7 匿名继承类_PHP7中的匿名类使用方法相关推荐

  1. php7 匿名继承类_PHP7中的匿名类使用方法_后端开发

    PHP 微服务集群搭建 - Hyperf_后端开发 Hyperf 是基于 Swoole 4.4+ 实现的高性能.高灵活性的 PHP 协程框架,内置协程服务器及大量常用的组件,性能较传统基于 PHP-F ...

  2. android 遍历实体类,Java中遍历实体类(处理MongoDB)

    在实际过程中,经常要将实体类进行封装,尤其是处理数据库的过程中:因此,对于遍历实体类能够与数据库中的一行数据对应起来. 我是使用的环境是Spring boot,访问的数据库时MongoDB 实体类遍历 ...

  3. java的匿名函数_JAVA语言中的匿名函数详解

    本文主要向大家介绍了JAVA语言中的匿名函数详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.使用匿名内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: ...

  4. java中所有的类都继承于_Java中所有的类都是通过直接或间接地继承( )类得到的...

    Java中所有的类都是通过直接或间接地继承( )类得到的 答:java.lang.Object 关于主机地址 192.168.19.125 (子网掩码: 255.255.255.248 ),以下说法正 ...

  5. php 序列化匿名函数,在php中序列化匿名函数

    有没有办法在 PHP中序列化匿名函数? protected function _fetchCode() { // Open file and seek to the first line of the ...

  6. matlab匿名函数求导,MATLAB中的匿名函数和Python中的匿名函数

    在MATLAB和Python中都有一个叫做匿名函数的东西,在这里对比一下. 一. MATLAB中这样来定义一个匿名函数: f = @(x1, x2, ...) exper @后面的括号里面是自变量,然 ...

  7. python中的元类_python中的元类

    类也是对象,但是类有创建对象的能力 动态创建一个类: classmonkey():defbanana(self):print 'banana!' defapple(self):print 'i wan ...

  8. python 类中定义类_Python中的动态类定义

    python 类中定义类 Here's a neat Python trick you might just find useful one day. Let's look at how you ca ...

  9. java client类_Jmeter中自定义JavaSamplerClient类的编写

    自定义的JavaSamplerClient类需要满足以下几个条件: 1.需要把Jmter的ext目录下的ApacheJmeter_core.jar和ApacheJmetere_java.jar 引入到 ...

  10. python class类_python中的class(类)

    编码注释: 在源文件的第一行或第二行写入如下内容: # -*- coding:gbk -*- # 设置源文件编码格式为:gbk 或 # -*- coding:utf-8 -*- # 设置源文件编码格式 ...

最新文章

  1. 春天闻香食花——品尝一顿愉悦的花餐
  2. 56 安装RabbitMQ或Redis
  3. subpage新写法
  4. 跟随器反馈回路电阻_如何将短反馈回路设置为单独编码器
  5. 聚类分析在用户行为中的实例_用户关注行为数据分析过程详解-描述统计+聚类...
  6. 数据助力防疫,疫情密切接触人员追踪算法赛期待你的加入
  7. Win10安装pdf虚拟打印机的方法
  8. 【渝粤题库】陕西师范大学800010 经济地理学
  9. RS485串口通信实验
  10. 期刊论文发表的格式详细介绍
  11. 跨站脚本攻击基础 ——合天网安实验室学习笔记
  12. 基于微信小程序的培训机构管理系统毕业设计源码
  13. TS判断6种数据类型
  14. Android 最全面试题汇总(问题+答案+详解链接)
  15. 计算机二级各个科目的区别,计算机二级考试的各个科目的内容及区别
  16. 【微信小程序】全局变量的定义与使用
  17. Python学习0——基础知识1
  18. P vs. NP:从一则数学家谋杀案说起
  19. 表示条件:10 x 100或x 0的c语言表达式是,西安培华学院c语言期未考试A.doc
  20. 转200条装修小常识

热门文章

  1. 文献管理三剑客之endnote broken attachments
  2. 文献管理三剑客之noteexpress打不开 cannot find import; dll may be missing corrupt or worng
  3. Atitit 嵌入式系统与pc系统的对比 目录 1. 哈佛结构和冯诺依曼结构 普林斯顿结构区 1 2. 中断程序 类库调用 1 3. 指令集 三大流程语句 与 运算语句 赋值语句 1 4. 异
  4. Atitit 演讲常用肢体语言与手势总结 目录 1. 原则 ,哑语一样,手势不只是补充。。。 1 2. 比拟实际物体与抽象物体 1 2.1. 三个实用的手势: 1 2.2. (五)、演讲中忌讳的动作
  5. Atitit 防止迟到与防止打卡打不上解决方案 attilax总结
  6. Atitit 财政学概论 attilax学习笔记
  7. Atitit.会员卡(包括银行卡)api的设计
  8. paip.python优缺点attilax总结
  9. Paip.断点调试MYSQL存储过程跟函数的解决方案大法
  10. paip.重装系统需要备份的资料总结..