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 相关文章推荐
如何给phpadmin一个保护
Oct 09 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
PHP 实现判断用户是否手机访问
Jan 21 PHP
PHP利用APC模块实现文件上传进度条的方法
Jan 26 PHP
php递归创建目录的方法
Feb 02 PHP
php限制上传文件类型并保存上传文件的方法
Mar 13 PHP
php实现根据词频生成tag云的方法
Apr 17 PHP
php实现只保留mysql中最新1000条记录
Jun 18 PHP
利用switch语句进行多选一判断的实例代码
Nov 14 PHP
PHP从尾到头打印链表实例讲解
Sep 27 PHP
PHP利用百度ai实现文本和图片审核
May 08 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
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
php给图片添加文字水印方法汇总
2015/08/27 PHP
php实现的Curl封装类Curl.class.php用法实例分析
2015/09/25 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
jquery实现的超出屏幕时把固定层变为定位层的代码
2010/02/23 Javascript
JS 树形递归实例代码
2010/05/18 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
2020/11/16 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
python集合类型用法分析
2015/04/08 Python
Python中str.format()详解
2017/03/12 Python
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
python设定并获取socket超时时间的方法
2019/01/12 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
python二维码操作:对QRCode和MyQR入门详解
2019/06/24 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
Python join()函数原理及使用方法
2020/11/14 Python
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
迟到检讨书800字
2014/01/13 职场文书
水利学院求职自荐书
2014/02/01 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
怎样写工作总结啊!
2019/06/18 职场文书
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
2021/05/21 Redis