PHP预定义接口一:Traversable

Traversable用于检测一个类是否可以使用 foreach 进行遍历。

  • 这是一个无法在 PHP 脚本中实现的内部引擎接口,实际编程中我们使用Iterator接口或者IteratorAggregate接口来实现遍历。
  • 这个接口没有任何方法,它的作用仅仅是作为所有可遍历类的基本接口。
接口摘要
Traversable {
}

代码演示

$arr = [1, 2, 3, 4];
$obj = (object)$arr;

if ($arr instanceof \Traversable) {
    echo ‘arr is Traversable‘ . PHP_EOL;
} else {
    echo ‘arr is not Traversable‘ . PHP_EOL;
}

if ($obj instanceof \Traversable) {
    echo ‘obj is Traversable‘ . PHP_EOL;
} else {
    echo ‘obj is not Traversable‘ . PHP_EOL;
}

// arr和obj不是implement Traversable

原文地址:http://blog.51cto.com/phpme/2129382

时间: 2024-08-29 07:48:27

PHP预定义接口一:Traversable的相关文章

复习PHP-语言参考-预定义接口

1.Traversable 他是一个遍历接口规范 注意:发现一个有用的函数get_declared_classes,可以以数组形式显示当前脚本下所有已经定义的类名 2.Iterator Iterator迭代器继承自Traversable,是一种遍历对象内容的对象. 你可以自己写一个子类继承自它,并写上具体遍历的方法. Iterator包含:current(返回当前元素),key(当前键),next(下一个元素),rewind(返回至初始元素),valid(检测当前元素是否存在)五种方法. 3.I

PHP预定义接口之 ArrayAccess

最近这段时间回家过年了,博客也没有更新,感觉少学习了好多东西,也错失了好多的学习机会,就像大家在春节抢红包时常说的一句话:一不留神错过了好几亿.废话少说,这篇博客给大家说说关于PHP预定义接口中常用到的重量级人物: ArrayAccess.大家也许会问,最基本.最常用的预定义接口有6个呢,为啥非得说这个.从日常的使用情况来看:这个出现的频率非常高,特别是在框架中,比如Laravel.Slim等都会用到,并且用得非常经典,让人佩服啊.从技术上说:说实话其他的我用的少啊!只是知道简单的用法,对他的理

预定义接口

迭代器:可在内部迭代自己的外部迭代器或类的接口. Iterator::current/key/next/rewind/valid. 用foreach调用迭代器方法时的顺序: 聚合式迭代器:创建外部迭代器的接口. 数组式访问: ArrayAccess::offsetExists 检测一个偏移位置是否存在 ArrayAccess::offsetGet 获取一个偏移位置的值 ArrayAccess::offsetSet 设置一个偏移位置的值 ArrayAccess::offsetUnset 复位一个偏

php预定义接口中迭代的执行流程

<?php class myIterator implements Iterator { private $position = 0 ; private $array = array( "firstelement" , "secondelement" , "lastelement" , ); public function __construct () { $this -> position = 0 ; } //第一步 functio

【struts2】预定义拦截器

1)预定义拦截器 Struts2有默认的拦截器配置,也就是说,虽然我们没有主动去配置任何关于拦截器的东西,但是Struts2会使用默认引用的拦截器.由于Struts2的默认拦截器声明和引用都在这个Struts-default.xml里面,因此我们需要到这个文件的struts-default包里去看一下.定义如下: 1 <interceptors> 2 <interceptor name="alias" class="com.opensymphony.xwor

PHP魔术函数、魔术常量、预定义常量

一.魔术函数(13个) 1.__construct() 实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用. 2.__destruct() 当删除一个对象或对象操作终止时被调用. 3.__call() 对象调用某个方法, 若方法存在,则直接调用:若不存在,则会去调用__call函数. 4.__get() 读取一个对象的属性时,若属性存在,则直接返回属性值: 若不存在,则会调用__get函数. 5.__set() 设置一个

Attribute(一)——预定义特性

在项目中接触到了Attribute,那么什么是Attribute,有些什么作用呢?这里来了解一下. 一.什么是Attribute Attribute 类将预定义的系统信息或用户定义的自定义信息与目标元素相关联.目标元素可以是程序集.类.构造函数.委托.枚举.事件.字段.接口.方法.可移植可执行文件模块.参数.属性 (Property).返回值.结构或其他属性 (Attribute) 在这里,我们需要将Attribute和property分开 property是指类想外提供的字段,它属于面向对象层

Visual Studio 2012 预定义数据类型

预定义数据类型 一.值类型 整型:(整数) 有符号整型和无符号整形,区别是有符号的有负数无符号的都是正数, 2x+1 常用int 有符号:              带有正负数,范围为按所写依次增大 Sbyte   -128到127    有符号8位整数 short    -32,768 到 32,767    有符号16位整数 int     -2,147,483,648 到 2,147,483,647     有符号 32 位整数 long   -9,223,372,036,854,775,

常用的预定义的宏

常用的预定义的宏 常用的预定义的宏有:__LINE__ 当前源程序行的行号,用十进制整数常量表示 __FILE__ 当前源文件的名称,用字符串常量表示 __DATE__ 编译时的日期,用"MM dd yyyy"形式的字符串常量表示 __TIME__ 编译时的时间,用"hh:mm:ss"形式的字符串常量表示 __STDC__ 当且只当编译器遵循ISO标准时,它的值是十进制常量1 __STDC__VERSION__ 如果编译器遵循C99,则这个宏的值是199901L,其