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 相关文章推荐
几个学习PHP的网址
Nov 25 PHP
浅析PHP递归函数返回值使用方法
Feb 18 PHP
PHP设计模式之解释器模式的深入解析
Jun 13 PHP
php使用标签替换的方式生成静态页面
May 21 PHP
PHP Yii框架之表单验证规则大全
Nov 16 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
PHP 二维数组和三维数组的过滤
Mar 16 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
May 16 PHP
php微信公众号开发(3)php实现简单微信文本通讯
Dec 15 PHP
利用php获得flv视频长度的实例代码
Oct 26 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
Feb 15 PHP
Laravel-admin之修改操作日志的方法
Sep 30 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使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
js传值 判断
2006/10/26 Javascript
js兼容标准的表格变色效果
2008/06/28 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
2015/09/07 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
Python面向对象编程中的类和对象学习教程
2015/03/30 Python
python实现的简单RPG游戏流程实例
2015/06/28 Python
使用Python编写爬虫的基本模块及框架使用指南
2016/01/20 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
Python操作json的方法实例分析
2018/12/06 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
Python3 JSON编码解码方法详解
2019/09/06 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
如何在sublime编辑器中安装python
2020/05/20 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
CSS3中使用RGBa来调节透明度的教程
2016/05/09 HTML / CSS
物业管理计划书
2014/01/10 职场文书
图书室管理制度
2014/01/19 职场文书
网络编辑岗位职责范本
2014/02/10 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
委托书如何写
2014/08/30 职场文书
预备党员入党感想
2015/08/10 职场文书
《田忌赛马》教学反思
2016/02/19 职场文书
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server