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学习之PHP运算符
Oct 09 PHP
在smarty中调用php内置函数的方法
Feb 07 PHP
实例讲解PHP面向对象之多态
Aug 20 PHP
Smarty中常用变量操作符汇总
Oct 27 PHP
PHP+JQuery+Ajax实现分页方法详解
Aug 06 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 PHP
PHP巧妙利用位运算实现网站权限管理的方法
Mar 12 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
PHP按符号截取字符串的指定部分的实现方法
Sep 10 PHP
TP5框架请求响应参数实例分析
Oct 17 PHP
laravel框架中视图的基本使用方法分析
Nov 23 PHP
php实现简易计算器
Aug 28 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 批量删除数据的方法分析
2009/10/30 PHP
PHP file_exists问题杂谈
2012/05/07 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
使用PHP计算两个路径的相对路径
2013/06/14 PHP
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
一个不错的仿携程自定义数据下拉选择select
2014/09/01 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
jQuery无刷新切换主题皮肤实例讲解
2015/10/21 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
那些精彩的JavaScript代码片段
2017/01/12 Javascript
用director.js实现前端路由使用实例
2017/01/27 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
jQuery-Citys省市区三级菜单联动插件使用详解
2019/07/26 jQuery
vue倒计时刷新页面不会从头开始的解决方法
2020/03/03 Javascript
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
python字典快速保存于读取的方法
2018/03/23 Python
python图像和办公文档处理总结
2019/05/28 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
python实现数据分析与建模
2019/07/11 Python
Django视图扩展类知识点详解
2019/10/25 Python
2014年师德师风自我剖析材料
2014/09/27 职场文书
党员示范岗材料
2014/12/19 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
食堂管理制度范本
2015/08/04 职场文书
2016领导干部廉洁从政心得体会
2016/01/19 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书