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 array_push 数组函数
Dec 26 PHP
PHP正则的Unknown Modifier错误解决方法
Mar 02 PHP
PHP的一个基础知识 表单提交
Jul 04 PHP
PHP实现HTML生成PDF文件的方法
Nov 07 PHP
支持中文的PHP按字符串长度分割成数组代码
May 17 PHP
PHP中你应该知道的require()文件包含的正确用法
Jun 12 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
May 11 PHP
PHP设计模式之观察者模式定义与用法示例
Aug 04 PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 PHP
浅析PHP echo 和 print 语句
Jun 30 PHP
基于php+MySql实现学生信息管理系统实例
Aug 04 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获取当前网址url并替换参数或网址的方法
2010/06/06 PHP
php实现文件下载简单示例(代码实现文件下载)
2014/03/10 PHP
点击广告后才能获得下载地址
2006/10/26 Javascript
不错的JS中变量相关的细节分析
2007/08/13 Javascript
javascript document.compatMode兼容性
2010/02/23 Javascript
制作高质量的JQuery Plugin 插件的方法
2010/04/20 Javascript
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
详解js闭包
2014/09/02 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
angularjs 缓存的使用详解
2018/03/19 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
用python3 urllib破解有道翻译反爬虫机制详解
2019/08/14 Python
python3操作注册表的方法(Url protocol)
2020/02/05 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
如何基于Python按行合并两个txt
2020/11/03 Python
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
村官学习十八大感想
2014/01/15 职场文书
二手书店创业计划书
2014/01/16 职场文书
小学教师师德演讲稿
2014/05/06 职场文书
销售队伍口号
2014/06/11 职场文书
房产公证书
2015/01/23 职场文书
学校国庆节活动总结
2015/03/23 职场文书
给病人的慰问信
2015/03/23 职场文书
重阳节简报
2015/07/20 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电
Go标准容器之Ring的使用说明
2021/05/05 Golang
JS 基本概念详细介绍
2021/10/16 Javascript
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android
Spring Boot配合PageHelper优化大表查询数据分页
2022/04/20 Java/Android