PHP预定义接口——Iterator用法示例

本文实例讲述了PHP预定义接口——Iterator用法。分享给大家供大家参考,具体如下:

Iterator(迭代器)接口

可在内部迭代自己的外部迭代器或类的接口。

接口摘要

Iterator extends Traversable {
    /* 方法 */
    abstract public current ( void ) : mixed
    abstract public key ( void ) : scalar
    abstract public next ( void ) : void
    abstract public rewind ( void ) : void
    abstract public valid ( void ) : bool
}

例:

<?php
class myIterator implements Iterator
{
  private $position = 0;
  private $array = array(
    'first_element',
    'second_element',
    'last_element',
  );

  /**
   * 重置键的位置
   */
  public function rewind(): void
  {
    var_dump(__METHOD__);
    $this->position = 0;
  }

  /**
   * 返回当前元素
   */
  public function current()
  {
    var_dump(__METHOD__);
    return $this->array[$this->position];
  }

  /**
   * 返回当前元素的键
   * @return int
   */
  public function key(): int
  {
    var_dump(__METHOD__);
    return $this->position;
  }

  /**
   * 将键移动到下一位
   */
  public function next(): void
  {
    var_dump(__METHOD__);
    ++$this->position;
  }

  /**
   * 判断键所在位置的元素是否存在
   * @return bool
   */
  public function valid(): bool
  {
    var_dump(__METHOD__);
    return isset($this->array[$this->position]);
  }
}

$it = new myIterator;

foreach ($it as $key => $value) {
  var_dump($key, $value);
  echo "\n";
}

输出结果:

string 'myIterator::rewind' (length=18)
string 'myIterator::valid' (length=17)
string 'myIterator::current' (length=19)
string 'myIterator::key' (length=15)
int 0
string 'first_element' (length=13)
string 'myIterator::next' (length=16)
string 'myIterator::valid' (length=17)
string 'myIterator::current' (length=19)
string 'myIterator::key' (length=15)
int 1
string 'second_element' (length=14)
string 'myIterator::next' (length=16)
string 'myIterator::valid' (length=17)
string 'myIterator::current' (length=19)
string 'myIterator::key' (length=15)
int 2
string 'last_element' (length=12)
string 'myIterator::next' (length=16)
string 'myIterator::valid' (length=17)

由结果可知,当类实现了Iterator接口,实现改类实例数据集的时候首先会将数据集的键重置,然后逐步后移,每次都会进行然后返回当前元素以及当前键。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

(0)

相关推荐

  • PHP开发API接口签名生成及验证操作示例

    本文实例讲述了PHP开发API接口签名生成及验证操作.分享给大家供大家参考,具体如下: 开发过程中,我们经常会与接口打交道,有的时候是调取别人网站的接口,有的时候是为他人提供自己网站的接口,但是在这调取的过程中都离不开签名验证. 我们在设计签名验证的时候,请注意要满足以下几点: 可变性:每次的签名必须是不一样的. 时效性:每次请求的时效,过期作废等. 唯一性:每次的签名是唯一的. 完整性:能够对传入数据进行验证,防止篡改. 一.签名参数sign生成的方法 第1步: 将所有参数(注意是所有参数),

  • PHP封装XML和JSON格式数据接口操作示例

    本文实例讲述了PHP封装XML和JSON格式数据接口操作.分享给大家供大家参考,具体如下: 使用PHP开发app后端的接口时,我们需要返回数据,最常用的就是XML和JSON格式的数据,那么样返回呢? 1.JSON json数据是最容制造的,只要使用php自带的json_encode()函数就可以简单的制作出json数据了 2.XML xml数据就要复杂一点了,让我们看一下xml数据的格式 那么怎样构造呢? 3.制作生产接口数据的类 <?php //定义生成接口数据类 class Api { /*

  • PHP 对象接口简单实现方法示例

    本文实例讲述了PHP 对象接口简单实现方法.分享给大家供大家参考,具体如下: 对象接口 (interface) 使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容. 接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的. 接口中定义的所有方法都必须是公有,这是接口的特性. 实现(implements) 要实现一个接口,使用 implements 操作符.类中必须实现接口中定义的所有方法,否则会报一个致命

  • PHP接口类(interface)的定义、特点和应用示例

    本文实例讲述了PHP接口类(interface)的定义.特点和应用.分享给大家供大家参考,具体如下: 一.接口的定义: 简单形象的说,接口是类的模板,定义实现它的类需要实现哪些功能. 二.接口的特点: 接口通过"interface"关键词来定义: 上下级接口可以通过"extends"关键词继承: 接口所有方法都是"public"权限(爱E族): 接口可以定义常量成员,但不能定义变量成员: 类通过"implements"关键词来

  • PHP实现腾讯短网址生成api接口实例

    1.简要描述 腾讯短网址(url.cn短链接)生成api接口是腾讯官方对外公开的短网址生成接口,可以将一个冗长的链接缩短成10个字符以内的短链接. 2.应用场景 腾讯短网址的应用场景很广,譬如短信营销.邮件推广.微信营销.QQ营销.自媒体推广.渠道推广等都会用到短网址.究其原因是在于短网址可以降低推广成本.用户记忆成本,提高用户点击率:在特定的场景下推广还能规避关键词,防止域名被拦截,隐藏真实地址等. 3.使用说明 接口地址:http://api.monkeyapi.com      请求方式:

  • PHP调用全国天气预报数据接口查询天气示例

    本文实例讲述了PHP调用全国天气预报数据接口查询天气.分享给大家供大家参考,具体如下: 基于PHP的聚合数据全国天气预报API服务请求的代码样例 本代码示例是基于PHP的聚合数据全国天气预报API服务请求的代码样例,使用前你需要: ①:通过https://www.juhe.cn/docs/api/id/39 申请一个天气预报API的appkey 样例代码包含了获取支持城市列表.根据城市获取天气预报.根据IP地址请求天气预报.根据GPS坐标请求天气.城市3小时天气预报的实现.示例代码主要是解析一些

  • PHP开发api接口安全验证操作实例详解

    本文实例讲述了PHP开发api接口安全验证操作.分享给大家供大家参考,具体如下: php的api接口 在PHP的开发工作中,对API接口开发不会陌生,后端人员写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json, 在这个过程中,服务器并不知道,请求的来源是什么,有可能是别人非法调用我们的接口,获取数据,因此就要使用安全验证来屏蔽某些调用. 验证原理示意图 原理 从图中可以看得很清楚,前台想要调用接口,需要使用几个参数生成签名. ● 时间戳:当前时间 ●

  • PHP接入支付宝接口失效流程详解

    最近在写个需要简单支付的小项目,用到了支付宝接口,现已完成.把php接入支付宝的流程写在这里供像我一样的小白参考. 1.首先要有一个创建一个应用(选好自己想要的功能,关于支付的功能,貌似都需要签约) 2.下载SDK&Dome网址 https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.CBtzBF&treeId=203&articleId=105910&docType=1 我选择的是MD5签名方式,下面红

  • 微信小程序开发之获取用户手机号码(php接口解密)

    后边要做一个微信小程序,并要能获取用户微信绑定的手机号码.而小程序开发文档上边提供的获取手机号码的接口(getPhoneNumber())返回的是密文,需要服务器端进行解密,但是官方提供的开发文档一如既往的乱,如果没有对小程序开发文档有一个整体的了解,搞懂解密流程还是有点难的.这里把小程序从请求用户授权获取手机号码直至获取到手机号码明文的整个流程串了起来,方便迅速了解,如下: 一. 前端相关操作: 1. 请求用户授权获取手机号码: 因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 AP

  • php的api数据接口书写实例(推荐)

    以下是接口代码实例: <?php $output = array(); $a = @$_GET['a'] ? $_GET['a'] : ''; $uid = @$_GET['uid'] ? $_GET['uid'] : 0; if (empty($a)) { $output = array('data'=>NULL, 'info'=>'坑爹啊!', 'code'=>-201); exit(json_encode($output)); } //走接口 if ($a == 'get_u

  • 如何用PHP编写简单的api数据接口

    一.编写接口所需几样工具或软件(均是win7+64位) 1.phpStudy.SQLyog和编码工具(sublime text/webStorm/vs code均可,按自己习惯来): 2.安装好phpStudy之后,打开软件,点击启动:如果Apache和MySQL右边的显示都是绿色的,那么说明服务启动成功:另外注意一下开始的PHP服务版本,因为不同的版本对应不同node.js版本或SQLyog版本,如果开启不了,则自行百度解决,一般都是要下载对应支持的VC9(分32位和64位)或VC11(分32

  • PHP实现chrome表单请求数据转换为接口使用的json数据

    为什么要写转换程序 最近在做旧版程序迁移,旧的架构为常规的MVC模式,新版架构全部改成restful架构. 由于改版数据是一致的,但是请求结构不一致,新版的请求全部以json形式提交,为了方便测试,之前一直都是直接在浏览器打开开发者工具,然后把请求内容复制过来,然后手动改成json形式,由于之前数据量比较少,暂时未发现测试时候不方便的情况,但是今天遇到了数据比较多的情况,于是我想,为啥不写一段转换程序呢? 本身来说,程序的初衷应该是提高工作效率,这也是我之前缺少反思的地方,因此写下这篇文章做个记

  • PHP语言对接抖音快手小红书视频/图片去水印API接口源码

    以下为PHP语言调用去水印接口的示例,分别展示GET请求方式和POST请求方式的调用方式.示例代码中用到的userId和secretKey请前往开发者接口管理中心获取. 接口文档:https://jx.henghengmao.com/page/apidoc GET请求方式调用接口示例: $url = 'https://v.douyin.com/JjEFdHT/'; //请把此处的userId和secretKey换成你自己的 这是GET请求方式 $api = 'https://api.henghe

  • php与阿里云短信接口接入操作案例分析

    本文实例讲述了php与阿里云短信接口接入操作.分享给大家供大家参考,具体如下: 使用阿里云短信API,需要在控制台获取以下必要参数,其中需要自己手机验证+官方审核多次,尤其审核需要保持耐心. 1. accessKeyId  相当于你的个人账户密钥: 2. accessKeySecret 与上是成对的: 3. SignName  个人签名,在发出去的短信中,这个签名会显示在开头,类似 [签名]亲爱的用户...... 这种格式,SignName需要通过提交审核: 4.TemplateCode  模板

随机推荐