数码资讯
PHP预定义接口的详细解释
有PHP几个预定义的接口,和四个常用的接口(iteratoraggregate(聚合聚合迭代器迭代器),可数,ArrayAccess,Iterator)进行了详细的介绍给你。 iteratoraggregate(聚集集合迭代器迭代器)接口 复制代码代码如下所示: iteratoraggregate
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
有PHP几个预定义的接口,和四个常用的接口(iteratoraggregate(聚合聚合迭代器迭代器),可数,ArrayAccess,Iterator)进行了详细的介绍给你。
iteratoraggregate(聚集集合迭代器迭代器)接口
复制代码代码如下所示:
iteratoraggregate {可延伸
摘要公共通行getiterator(void)
}
该接口实现一个函数来创建外部迭代器,具体怎么去理解它,当我们使用foreach遍历的对象时,如果没有继承的iteratoraggregate接口,遍历所有公共(public是表单中对象的属性只能为VaR)。如果我们继承iteratoraggregate,我们将使用对象的类实现的getiterator方法返回。在这里,我们必须注意,返回的对象必须是一个遍历对象或一个从遍历对象,否则将抛出一个异常。
例
我{
私人_data美元= {
A= >闫瑞涛,
B = > 'yanruitao,
C = > 'lulu,
};
公共功能getiterator()
{
返回新数组迭代器(美元-> _data);
}
}
$ obj =新的我;
foreach(obj美元美元美元关键=值){
$;
}
输出为null
我实现了iteratoraggregate {
私人_data美元= {
A= >闫瑞涛,
B = > 'yanruitao,
C = > 'lulu,
};
公共功能getiterator()
{
返回新数组迭代器(美元-> _data);
}
}
$ obj =新的我;
foreach(obj美元美元美元关键=值){
$;
}
结果:
a闫瑞涛
B = > yanruitao
露露
可数的接口
复制代码代码如下所示:
{可数
抽象公共整数(空)
}
这个接口用于计算对象的数量,特别是如何理解它,当我们在一个叫做计数的对象时,如果函数不继承,可数总是返回1,如果计数计数方法的继承者将返回,请看下面的例子:
类countme
{
保护_mycount = 3美元;
公共功能计数()
{
返回_mycount美元->;
}
}
为可数=新countme();
回声计数($可计数);
返回1
类countme实现可数
{
保护_mycount = 3美元;
公共功能计数()
{
返回_mycount美元->;
}
}
为可数=新countme();
回声计数($可计数);
返回3
ArrayAccess接口
{ ArrayAccess
摘要公共布尔offsetexists(混合为偏移)
摘要公共混合(混合偏offsetget美元)
公共无效offsetset(混合美元价值偏移,混合)
公共无效offsetunset(混合为偏移)
}
类countme
{
保护_mycount = 3美元;
公共功能计数()
{
返回_mycount美元->;
}
}
为可数=新countme();
回声计数($可计数);
返回1
类countme实现可数
{
保护_mycount = 3美元;
公共功能计数()
{
返回_mycount美元->;
}
}
为可数=新countme();
回声计数($可计数);
返回3
ArrayAccess接口
复制代码代码如下所示:
{ ArrayAccess
摘要公共布尔offsetexists(混合为偏移)
摘要公共混合(混合偏offsetget美元)
公共无效offsetset(混合美元价值偏移,混合)
公共无效offsetunset(混合为偏移)
}
这个接口使我们可以访问对象访问数组,该怎么说呢,我猜是PHP在词法分析当一个对象数组,对象去发现是否存在ArrayAccess如果相应的操作(设置,设置,设置,得到),所以我们可以把一个数组的类,实现阵列的基本运行方式,见下面的例子:
类myobj时
{
}
$ obj =新myobj时;
$ obj { 'name' };
/ /致命错误:不能使用类型的数组对象myobj时
类实现了ArrayAccess myobj时
{
公共功能offsetset(美元抵消,美元的价值)
{
回波抵消offsetset:{ } = > { $美元价值} ;
}
公共功能offsetexists($偏移)
{
回声offsetexists:{ $偏移} ;
}
公共功能offsetunset($偏移)
{
回声offsetunset:{ $偏移} ;
}
公共功能offsetget($偏移)
{
回声offsetget:{ $偏移} ;
}
}
$ obj =新myobj时;
$ obj { 1 } =燕的合成;
isset($ obj { 'name' });
unset($ obj { 'name' });
$ obj { 'yrt};
输出结果:
offsetset:1 =闫瑞涛
offsetexists:名字
offsetunset:名字
offsetget:YRT
类实现了ArrayAccess myobj时
{
私人_data美元= { };
公共功能offsetset(美元抵消,美元的价值)
{
美元-> _data { } =美元抵消美元的价值;
}
公共功能offsetexists($偏移)
{
返回isset(美元-> _data { $偏移});
}
公共功能offsetunset($偏移)
{
unset(美元-> _data { $偏移});
}
公共功能offsetget($偏移)
{
返回这个-> _data { $偏移};
}
}
$ obj =新myobj时;
obj { } =美元'yrt ' '严'的合成;
var_dump($ obj { 'yrt});
var_dump(isset($ obj { 'yrt ' }));
撤消($ obj { 'yrt});
var_dump(isset($ obj { 'yrt ' }));
var_dump($ obj { 'yrt});
输出:
字符串(9)闫瑞涛
布尔(真的)
Bool(假)
注意:未定义的指标:YRT / /最后的报价通知
以上的对象只能是数组的基本操作,甚至穿越,结合前人的iteratoraggregate可以每:
类实现了ArrayAccess myobj时,iteratoraggregate
{
私人_data美元= { };
公共功能getiterator()
{
返回新数组迭代器(美元-> _data);
}
......
}
$ obj =新myobj时;
obj { } =美元'yrt ' '严'的合成;
$ obj { 1 } =燕的合成;
$ obj { } =延安'name'的合成;
obj { } =美元时代23;
foreach(obj美元美元美元关键=值){
回声{ $ };
}
输出:
YRT =闫瑞涛
1 =闫瑞涛
名称=闫瑞涛
年龄= 23
迭代器的接口:
复制代码代码如下所示:
迭代器遍历延伸{
抽象公共混合流(无效)
抽象公共标量密钥(空)
抽象空下一个(空)
抽象公共空白倒带(空白)
抽象公共有效(无效)
}
在内部循环,自身或外部迭代器接口,这是官方文档的解释,看不清楚,事实上,我觉得这个接口功能和trratoraggregate(文档:创建一个迭代器接口,接口直接返回一个迭代器)是相似的,但里面的类定义了自己的真实,看一个例子:
类实现迭代器{ myobj时
私人_data美元= { };
公共功能__construct(数组arr)
{
美元-> _data = $ ARR;
}
公共函数电流()
{
返回电流(美元-> _data);
}
公共功能键()
{
返回键(美元-> _data);
}
公共职能下()
{
二(美元-> _data);
}
公共功能倒带()
{
复位(美元-> _data);
}
公共功能有效()
{
返回$ >键(空)=;
}
}
$ { {
YRT= >闫瑞涛,
名字= >闫瑞涛,
假,
燕的合成
};
$ obj =新myobj时(T);
foreach(obj美元美元美元关键=值){
回声{ } =美元的关键。var_export (美元的价值,真的);
}
输出:
YRT = >闫瑞涛
名称= >闫瑞涛
0 = false
1 = >闫瑞涛
这参考一篇关于哥斯达黎加问题的文章(迭代器模式),但对兄弟的判断有效有缺陷,当值为假时将切断北方。
总结
说得这么多,他们似乎还没有意识到自己的用处。有人建议我们在yii2源码一看,它被广泛应用于源代码。看完后,你会觉得它似乎很有用。
这是这篇文章的全部介绍,希望大家喜欢。
iteratoraggregate(聚集集合迭代器迭代器)接口
复制代码代码如下所示:
iteratoraggregate {可延伸
摘要公共通行getiterator(void)
}
该接口实现一个函数来创建外部迭代器,具体怎么去理解它,当我们使用foreach遍历的对象时,如果没有继承的iteratoraggregate接口,遍历所有公共(public是表单中对象的属性只能为VaR)。如果我们继承iteratoraggregate,我们将使用对象的类实现的getiterator方法返回。在这里,我们必须注意,返回的对象必须是一个遍历对象或一个从遍历对象,否则将抛出一个异常。
例
我{
私人_data美元= {
A= >闫瑞涛,
B = > 'yanruitao,
C = > 'lulu,
};
公共功能getiterator()
{
返回新数组迭代器(美元-> _data);
}
}
$ obj =新的我;
foreach(obj美元美元美元关键=值){
$;
}
输出为null
我实现了iteratoraggregate {
私人_data美元= {
A= >闫瑞涛,
B = > 'yanruitao,
C = > 'lulu,
};
公共功能getiterator()
{
返回新数组迭代器(美元-> _data);
}
}
$ obj =新的我;
foreach(obj美元美元美元关键=值){
$;
}
结果:
a闫瑞涛
B = > yanruitao
露露
可数的接口
复制代码代码如下所示:
{可数
抽象公共整数(空)
}
这个接口用于计算对象的数量,特别是如何理解它,当我们在一个叫做计数的对象时,如果函数不继承,可数总是返回1,如果计数计数方法的继承者将返回,请看下面的例子:
类countme
{
保护_mycount = 3美元;
公共功能计数()
{
返回_mycount美元->;
}
}
为可数=新countme();
回声计数($可计数);
返回1
类countme实现可数
{
保护_mycount = 3美元;
公共功能计数()
{
返回_mycount美元->;
}
}
为可数=新countme();
回声计数($可计数);
返回3
ArrayAccess接口
{ ArrayAccess
摘要公共布尔offsetexists(混合为偏移)
摘要公共混合(混合偏offsetget美元)
公共无效offsetset(混合美元价值偏移,混合)
公共无效offsetunset(混合为偏移)
}
类countme
{
保护_mycount = 3美元;
公共功能计数()
{
返回_mycount美元->;
}
}
为可数=新countme();
回声计数($可计数);
返回1
类countme实现可数
{
保护_mycount = 3美元;
公共功能计数()
{
返回_mycount美元->;
}
}
为可数=新countme();
回声计数($可计数);
返回3
ArrayAccess接口
复制代码代码如下所示:
{ ArrayAccess
摘要公共布尔offsetexists(混合为偏移)
摘要公共混合(混合偏offsetget美元)
公共无效offsetset(混合美元价值偏移,混合)
公共无效offsetunset(混合为偏移)
}
这个接口使我们可以访问对象访问数组,该怎么说呢,我猜是PHP在词法分析当一个对象数组,对象去发现是否存在ArrayAccess如果相应的操作(设置,设置,设置,得到),所以我们可以把一个数组的类,实现阵列的基本运行方式,见下面的例子:
类myobj时
{
}
$ obj =新myobj时;
$ obj { 'name' };
/ /致命错误:不能使用类型的数组对象myobj时
类实现了ArrayAccess myobj时
{
公共功能offsetset(美元抵消,美元的价值)
{
回波抵消offsetset:{ } = > { $美元价值} ;
}
公共功能offsetexists($偏移)
{
回声offsetexists:{ $偏移} ;
}
公共功能offsetunset($偏移)
{
回声offsetunset:{ $偏移} ;
}
公共功能offsetget($偏移)
{
回声offsetget:{ $偏移} ;
}
}
$ obj =新myobj时;
$ obj { 1 } =燕的合成;
isset($ obj { 'name' });
unset($ obj { 'name' });
$ obj { 'yrt};
输出结果:
offsetset:1 =闫瑞涛
offsetexists:名字
offsetunset:名字
offsetget:YRT
类实现了ArrayAccess myobj时
{
私人_data美元= { };
公共功能offsetset(美元抵消,美元的价值)
{
美元-> _data { } =美元抵消美元的价值;
}
公共功能offsetexists($偏移)
{
返回isset(美元-> _data { $偏移});
}
公共功能offsetunset($偏移)
{
unset(美元-> _data { $偏移});
}
公共功能offsetget($偏移)
{
返回这个-> _data { $偏移};
}
}
$ obj =新myobj时;
obj { } =美元'yrt ' '严'的合成;
var_dump($ obj { 'yrt});
var_dump(isset($ obj { 'yrt ' }));
撤消($ obj { 'yrt});
var_dump(isset($ obj { 'yrt ' }));
var_dump($ obj { 'yrt});
输出:
字符串(9)闫瑞涛
布尔(真的)
Bool(假)
注意:未定义的指标:YRT / /最后的报价通知
以上的对象只能是数组的基本操作,甚至穿越,结合前人的iteratoraggregate可以每:
类实现了ArrayAccess myobj时,iteratoraggregate
{
私人_data美元= { };
公共功能getiterator()
{
返回新数组迭代器(美元-> _data);
}
......
}
$ obj =新myobj时;
obj { } =美元'yrt ' '严'的合成;
$ obj { 1 } =燕的合成;
$ obj { } =延安'name'的合成;
obj { } =美元时代23;
foreach(obj美元美元美元关键=值){
回声{ $ };
}
输出:
YRT =闫瑞涛
1 =闫瑞涛
名称=闫瑞涛
年龄= 23
迭代器的接口:
复制代码代码如下所示:
迭代器遍历延伸{
抽象公共混合流(无效)
抽象公共标量密钥(空)
抽象空下一个(空)
抽象公共空白倒带(空白)
抽象公共有效(无效)
}
在内部循环,自身或外部迭代器接口,这是官方文档的解释,看不清楚,事实上,我觉得这个接口功能和trratoraggregate(文档:创建一个迭代器接口,接口直接返回一个迭代器)是相似的,但里面的类定义了自己的真实,看一个例子:
类实现迭代器{ myobj时
私人_data美元= { };
公共功能__construct(数组arr)
{
美元-> _data = $ ARR;
}
公共函数电流()
{
返回电流(美元-> _data);
}
公共功能键()
{
返回键(美元-> _data);
}
公共职能下()
{
二(美元-> _data);
}
公共功能倒带()
{
复位(美元-> _data);
}
公共功能有效()
{
返回$ >键(空)=;
}
}
$ { {
YRT= >闫瑞涛,
名字= >闫瑞涛,
假,
燕的合成
};
$ obj =新myobj时(T);
foreach(obj美元美元美元关键=值){
回声{ } =美元的关键。var_export (美元的价值,真的);
}
输出:
YRT = >闫瑞涛
名称= >闫瑞涛
0 = false
1 = >闫瑞涛
这参考一篇关于哥斯达黎加问题的文章(迭代器模式),但对兄弟的判断有效有缺陷,当值为假时将切断北方。
总结
说得这么多,他们似乎还没有意识到自己的用处。有人建议我们在yii2源码一看,它被广泛应用于源代码。看完后,你会觉得它似乎很有用。
这是这篇文章的全部介绍,希望大家喜欢。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。