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 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
PHP4实际应用经验篇(1)
Oct 09 PHP
关于使用coreseek并为其做分页的介绍
Jun 21 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
Jul 14 PHP
PHP中require和include路径问题详解
Dec 25 PHP
Symfony2中被遗弃的getRequest()方法分析
Mar 17 PHP
php编译安装php-amq扩展简明教程
Jun 25 PHP
浅谈PHP中的数据传输CURL
Sep 06 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
Sep 26 PHP
yii2实现 &quot;上一篇,下一篇&quot; 功能的代码实例
Feb 04 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 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 OPCode缓存 APC详细介绍
2010/10/12 PHP
php 伪静态之IIS篇
2014/06/02 PHP
thinkPHP实现表单自动验证
2014/12/24 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
Javascript全局变量var与不var的区别深入解析
2013/12/09 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
2014/03/08 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
2016/05/18 Javascript
Vue axios 中提交表单数据(含上传文件)
2017/07/06 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
2020/04/16 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
[05:17]DOTA2睡衣妹卖萌求签名 CJ第二天全明星影像
2013/07/28 DOTA
apache部署python程序出现503错误的解决方法
2017/07/24 Python
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
python中cPickle类使用方法详解
2018/08/27 Python
python后端接收前端回传的文件方法
2019/01/02 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
python实现数字炸弹游戏
2020/07/17 Python
土木工程毕业生自荐信
2013/09/21 职场文书
假日旅行社实习自我鉴定
2013/09/24 职场文书
自荐信不宜过于夸大
2013/11/06 职场文书
企业党员一句话承诺
2014/05/30 职场文书
前台岗位职责
2015/02/13 职场文书
应聘教师求职信范文
2015/03/20 职场文书
2015年学生资助工作总结
2015/05/25 职场文书
2022年显卡天梯图(6月更新)
2022/06/17 数码科技