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 相关文章推荐
相对路径转化成绝对路径
Apr 10 PHP
用php+javascript实现二级级联菜单的制作
May 06 PHP
php中AES加密解密的例子小结
Feb 18 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
php操作memcache缓存方法分享
Jun 03 PHP
ThinkPHP实现递归无级分类――代码少
Jul 29 PHP
php+ajax无刷新上传图片的实现方法
Dec 06 PHP
Yii2下session跨域名共存的解决方案
Feb 04 PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 PHP
thinkPHP框架整合tcpdf插件操作示例
Aug 07 PHP
Yii框架ACF(accessController)简单权限控制操作示例
Apr 26 PHP
php基于协程实现异步的方法分析
Jul 17 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数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
php学习笔记之面向对象编程
2012/12/29 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
学习php设计模式 php实现访问者模式(Visitor)
2015/12/07 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
zTree获取当前节点的下一级子节点数实例
2017/09/05 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python实现的购物车功能示例
2018/02/11 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
python内存管理机制原理详解
2019/08/12 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
如何基于Python + requests实现发送HTTP请求
2020/01/13 Python
Python数据正态性检验实现过程
2020/04/18 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
Python读取二进制文件代码方法解析
2020/06/22 Python
python中实现栈的三种方法
2020/12/19 Python
CSS实现聊天气泡效果
2020/04/26 HTML / CSS
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
企业治理工作自我评价
2013/09/26 职场文书
微观物理专业自荐信
2014/01/26 职场文书
医院护士见习期自我鉴定
2014/04/10 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
python not运算符的实例用法
2021/06/30 Python