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对gzip文件或者字符串解压实例参考
Jul 25 PHP
Smarty局部缓存的几种方法简介
Jun 17 PHP
php动态函数调用方法
May 21 PHP
Smarty变量用法详解
May 11 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
Mar 02 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
Nov 03 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
Feb 27 PHP
YII框架常用技巧总结
Apr 27 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 PHP
七种PHP开发环境搭建工具
Jun 28 PHP
php实现简单四则运算器
Nov 29 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 删除数组元素
2009/01/16 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
浅谈被jQuery抛弃的函数及替代函数
2015/05/03 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
2016/08/17 Javascript
jQuery实现可拖拽3D万花筒旋转特效
2017/01/03 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
详解vue服务端渲染(SSR)初探
2017/06/19 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
vue的mixins属性详解
2018/03/14 Javascript
vuex state及mapState的基础用法详解
2018/04/19 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
python深copy和浅copy区别对比解析
2019/12/26 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
婚庆公司的创业计划书
2014/01/22 职场文书
超市活动计划书
2014/04/24 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
员工辞职信怎么写
2015/02/27 职场文书
征求意见函
2015/06/05 职场文书
Python re.sub 反向引用的实现
2021/07/07 Python
关于Python中进度条的六个实用技巧分享
2022/04/05 Python