PHP7匿名类用法分析


Posted in PHP onSeptember 26, 2016

本文实例讲述了PHP7匿名类用法。分享给大家供大家参考,具体如下:

匿名类跟匿名函数一样,创建一次性的简单对象

<?php
/**
 * Created by PhpStorm.
 * User: bee
 * Date: 2016/4/24
 * Time: 00:17
 */
echo '匿名函数';
$anonymous_func = function(){return 'function';};
echo $anonymous_func();
echo '<br>';
echo '<hr>';
class common {
  public $default = 10;
  function __construct($key){
    $this->getVal($key);
  }
  public function getVal(int $i):int{
    $this->default += $i;
    return $this->default+0.1;
  }
}
echo '有名函数';echo '<br>';
$com = new common(1);
echo $com->getVal(2.2).'--';
echo $com->getVal(2.2).'--';
echo (new common(1))->getVal(8.9);
echo '<hr>';echo '匿名类';
//定义匿名类需继承
echo (new class(1) extends common{})->getVal(90);echo '<br>';
echo (new class(2) extends common{})->getVal(90);

运行效果图如下:

PHP7匿名类用法分析

匿名类被嵌套进普通 Class 后,不能访问这个外部类(Outer class)的 private(私有)、protected(受保护)方法或者属性。 为了访问外部类(Outer class)protected 属性或方法,匿名类可以 extend(扩展)此外部类。 为了使用外部类(Outer class)的 private属性,必须通过构造器传进来

<?php
class Outer
{
  private $prop = 1;
  protected $prop2 = 2;
  protected function func1()
  {
    return 3;
  }
  public function func2()
  {
    return new class($this->prop) extends Outer {
      private $prop3;
      public function __construct($prop)
      {
        $this->prop3 = $prop;
      }
      public function func3()
      {
        return $this->prop2 + $this->prop3 + $this->func1();
      }
    };
  }
}
echo (new Outer)->func2()->func3();//6

匿名函数可以实现闭包,那么相应的匿名类也可以实现闭包

<?php
/**
 * Created by PhpStorm.
 * User: bee
 * Date: 2016/4/24
 * Time: 1:51
 */
$arr = array();
for ($i=0; $i<3; $i++){
  $arr[] = new class($i){
    public $index=0;
    function __construct($i)
    {
      $this->index = $i;
      echo 'create</br>';
    }
    public function getVal(){
      echo $this->index;
    }
  };
}
$arr[2]->getVal();
echo '<br>';
var_dump($arr[1]);

运行效果图如下:

PHP7匿名类用法分析

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
屏蔽机器人从你的网站搜取email地址的php代码
Nov 14 PHP
PHP跨时区(UTC时间)应用解决方案
Jan 11 PHP
下拉列表多级联动dropDownList示例代码
Jun 27 PHP
浅析php与数据库代码开发规范
Aug 08 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
Jan 26 PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 PHP
ThinkPHP文件缓存类代码分享
Apr 22 PHP
PHP实现的QQ空间g_tk加密算法
Jul 09 PHP
PHP实现事件机制的方法
Jul 10 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 PHP
php实例化对象的实例方法
Nov 17 PHP
PHP7常量数组用法分析
Sep 26 #PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
Sep 26 #PHP
PHP7.1新功能之Nullable Type用法分析
Sep 26 #PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
Sep 26 #PHP
php版交通银行网银支付接口开发入门教程
Sep 26 #PHP
php版微信公众平台实现预约提交后发送email的方法
Sep 26 #PHP
php版微信公众平台入门教程之开发者认证的方法
Sep 26 #PHP
You might like
PHP+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
php学习笔记 数组遍历实现代码
2011/06/09 PHP
浅谈php优化需要注意的地方
2014/11/27 PHP
PHP把MSSQL数据导入到MYSQL的方法
2014/12/27 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
2015/03/03 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
一分钟理解js闭包
2016/05/04 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
python3.6的venv模块使用详解
2018/08/01 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
django实现更改数据库某个字段以及字段段内数据
2020/03/31 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
Omio英国:搜索并比较便宜的巴士、火车和飞机
2019/08/27 全球购物
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
总经理秘书工作职责
2013/12/26 职场文书
应聘编辑职位自荐信范文
2014/01/05 职场文书
中学生学雷锋演讲稿
2014/04/26 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
财务管理制度范本
2015/08/04 职场文书
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS
python神经网络 使用Keras构建RNN训练
2022/05/04 Python