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的宝库目录--PEAR
Oct 09 PHP
腾讯QQ php程序员面试题目整理
Jun 08 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
Oct 29 PHP
php获取301跳转URL简单实例
Dec 16 PHP
php实例分享之二维数组排序
May 15 PHP
php计算多维数组中所有值总和的方法
Jun 24 PHP
PHP用FTP类上传文件视频等的简单实现方法
Sep 23 PHP
php从数据库中读取特定的行(实例)
Jun 02 PHP
PHP ADODB实现事务处理功能示例
May 25 PHP
php实现数字补零的方法总结
Sep 12 PHP
PHP多进程通信-消息队列使用
Mar 08 PHP
PHP终止脚本运行三种实现方法详解
Sep 01 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调用三种数据库的方法(3)
2006/10/09 PHP
php 启动时报错的简单解决方法
2014/01/27 PHP
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
Node.js文件操作详解
2014/08/16 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
2014/10/16 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
对javascript继承的理解
2016/10/11 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
JS代码检查工具ESLint介绍与使用方法
2020/02/04 Javascript
《Python之禅》中对于Python编程过程中的一些建议
2015/04/03 Python
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
英国网上电器商店:Electricshop
2020/03/15 全球购物
银行会计职员个人的自我评价
2013/09/29 职场文书
教育专业个人求职信
2013/12/02 职场文书
财政局长自荐信范文
2013/12/22 职场文书
幼儿园春季开学寄语
2014/04/03 职场文书
2014年保卫科工作总结
2014/12/05 职场文书
2014年妇幼卫生工作总结
2014/12/09 职场文书
2015年班长个人工作总结
2015/04/03 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
使用numpy实现矩阵的翻转(flip)与旋转
2021/06/03 Python
Python中文纠错的简单实现
2021/07/07 Python
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang