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+mysql)
Nov 23 PHP
php入门小知识
Mar 24 PHP
创建数据库php代码 用PHP写出自己的BLOG系统
Apr 12 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
Apr 23 PHP
pdo中使用参数化查询sql
Aug 11 PHP
PHP之短标签开启设置
Jun 17 PHP
destoon找回管理员密码的方法
Jun 21 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
May 12 PHP
用PHP代码给图片加水印
Jul 01 PHP
php等比例缩放图片及剪切图片代码分享
Feb 13 PHP
[原创]php使用curl判断网页404(不存在)的方法
Jun 23 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
Feb 03 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二维数组用键名分组相加实例函数
2013/11/06 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
PHP中quotemeta()函数的用法讲解
2019/04/04 PHP
取选中的radio的值
2010/01/11 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
nodejs入门教程五:连接数据库的方法分析
2017/04/24 NodeJs
深入理解JavaScript和TypeScript中的class
2018/04/22 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
vue根据值给予不同class的实例
2018/09/29 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
python数据预处理之将类别数据转换为数值的方法
2017/07/05 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
django和vue实现数据交互的方法
2019/08/21 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
HTML5 Canvas实现放大镜效果示例
2020/03/25 HTML / CSS
AT&T Wireless:手机、无限数据计划和配件
2018/06/03 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
三好学生个人先进事迹材料
2014/05/17 职场文书
节水标语大全
2014/06/11 职场文书
教师求职信
2014/06/17 职场文书
励志演讲稿200字
2014/08/21 职场文书
上班时间打瞌睡检讨书
2014/09/26 职场文书
刑事和解协议书范本
2014/11/19 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
教育教学读书笔记
2015/07/02 职场文书
php实例化对象的实例方法
2021/11/17 PHP
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers