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模板引擎SMARTY
Oct 09 PHP
PHP iconv 函数转gb2312的bug解决方法
Oct 11 PHP
php 格式化数字的时候注意数字的范围
Apr 13 PHP
PHP打开和关闭文件操作函数总结
Nov 18 PHP
PHP+AJAX实现投票功能的方法
Sep 28 PHP
深入浅析php json 格式控制
Dec 24 PHP
Zend Framework动作助手Url用法详解
Mar 05 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
May 06 PHP
php 根据自增id创建唯一编号类
Apr 06 PHP
PHP中rename()函数的妙用讲解
Feb 28 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
phpcmsv9.0任意文件上传漏洞解析
Oct 20 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加密解密函数分享
2014/06/05 PHP
怎样搭建PHP开发环境
2015/07/28 PHP
laravel请求参数校验方法
2019/10/10 PHP
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
关于document.cookie的使用javascript
2010/10/29 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
2013/01/27 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
jquery设置元素的readonly和disabled的写法
2013/09/22 Javascript
基于jquery的simpleValidate简易验证插件
2014/01/31 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
JS中JSON对象和String之间的互转及处理技巧
2016/04/06 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
vue iView 上传组件之手动上传功能
2018/03/16 Javascript
详解JavaScript数据类型和判断方法
2020/09/04 Javascript
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
Python中的is和id用法分析
2015/01/26 Python
Python版微信红包分配算法
2015/05/04 Python
Python OS模块常用函数说明
2015/05/23 Python
Python自定义线程类简单示例
2018/03/23 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
python实现同一局域网下传输图片
2020/03/20 Python
如何利用python读取micaps文件详解
2020/10/18 Python
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
人力资源主管的岗位职责
2014/03/15 职场文书
公司业务员岗位职责
2014/03/18 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
青岛海底世界导游词
2015/02/11 职场文书
大学开学感言
2015/08/01 职场文书
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python