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程序效率优化的一些策略小结
Jul 17 PHP
php 截取字符串并以零补齐str_pad() 函数
May 07 PHP
php定时删除文件夹下文件(清理缓存文件)
Jan 23 PHP
计算php页面运行时间的函数介绍
Jul 01 PHP
Yii使用find findAll查找出指定字段的实现方法
Sep 05 PHP
php的闭包(Closure)匿名函数详解
Feb 22 PHP
php比较两个字符串长度的方法
Jul 13 PHP
分享PHP计算两个日期相差天数的代码
Dec 23 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
完美解决thinkphp唯一索引重复时出错的问题
Mar 31 PHP
thinkphp5框架实现的自定义扩展类操作示例
May 16 PHP
关于laravel模板中生成URL的几种模式总结
Oct 18 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实现无限级分类实现代码(递归方法)
2011/01/01 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
php计算税后工资的方法
2015/07/28 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
php rsa 加密,解密,签名,验签详解
2016/12/06 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
2019/03/18 PHP
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
学习Python selenium自动化网页抓取器
2018/01/20 Python
基于python实现简单日历
2018/07/28 Python
django框架自定义用户表操作示例
2018/08/07 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
HTML5中微数据概述及在搜索引擎中的使用举例
2013/02/07 HTML / CSS
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
Pretty You London官网:英国拖鞋和睡衣品牌
2019/05/08 全球购物
自荐信模版
2013/10/24 职场文书
矫正人员思想汇报
2014/01/08 职场文书
优秀教师工作感言
2014/02/16 职场文书
调解协议书
2014/04/16 职场文书
竞选大队委员演讲稿
2014/04/28 职场文书
村级换届选举方案
2014/05/10 职场文书
教师学期个人总结
2015/02/11 职场文书
城管个人总结
2015/02/28 职场文书
2016关于预防职务犯罪的心得体会
2016/01/21 职场文书
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android