首页 > 编程语言 >PHP预定义接口之 ArrayAccess

PHP预定义接口之 ArrayAccess

时间:2023-09-21 16:27:05浏览次数:41  
标签:function obj two 接口 offset container ArrayAccess PHP public

来源:http://www.shanhubei.com/archives/2754.html

arrayAccess 的作用是使得你的对象可以像数组一样可以被访问。应该说 ArrayAccess 在PHP5中才开始有的,PHP5中加入了很多新的特性,当然也使类的重载也加强了, PHP5 中添加了一系列接口,这些接口和实现的 Class 统称为 SPL。这个接口定义了4个必须要实现的方法:

{
    public function offsetExists($offset);
    public function offsetGet($offset);
    public function offsetSet($offset, $value);
    public function offsetUnset($offset);
}

下面是个例子:

<?php
class Obj implements ArrayAccess {
public $container = [
"one" => 1,
"two" => 2,
"three" => 3,
];

public function offsetSet($offset, $value): void {
if (is_null($offset)) {
$this->container[] = $value;
} else {
$this->container[$offset] = $value;
}
}

public function offsetExists($offset): bool {
return isset($this->container[$offset]);
}

public function offsetUnset($offset): void {
unset($this->container[$offset]);
}

public function offsetGet($offset): mixed {
return isset($this->container[$offset]) ? $this->container[$offset] : null;
}
}

$obj = new Obj;

var_dump(isset($obj["two"]));
var_dump($obj["two"]);
unset($obj["two"]);
var_dump(isset($obj["two"]));
$obj["two"] = "A value";
var_dump($obj["two"]);
$obj[] = 'Append 1';
$obj[] = 'Append 2';
$obj[] = 'Append 3';
print_r($obj);
?>

以下是输出结果:

bool(true)
int(2)
bool(false)
string(7) "A value"
obj Object
(
    [container:obj:private] => Array
        (
            [one] => 1
            [three] => 3
            [two] => A value
            [0] => Append 1
            [1] => Append 2
            [2] => Append 3
        )

)

目录

  • ArrayAccess::offsetExists — 检查一个偏移位置是否存在
  • ArrayAccess::offsetGet — 获取一个偏移位置的值
  • ArrayAccess::offsetSet — 设置一个偏移位置的值
  • ArrayAccess::offsetUnset — 复位一个偏移位置的值

 

标签:function,obj,two,接口,offset,container,ArrayAccess,PHP,public
From: https://www.cnblogs.com/shanhubei/p/17720211.html

相关文章

  • 升级PHP8.2
    1.官网下载PHP压缩包:  页面上有不同的PHP版本,这里我们下载的是VS16x64NonThreadSafe: php-8.2.10-nts-Win32-vs16-x64.zip  官网地址2.解压缩包  将下载的压缩包解压到D:\phpstudy_pro\Extensions\php并重命名为php8.2.10nts3.修改配置文件  3.1复制一份p......
  • PHP获取Word文档 docx文件内容
    1.下载库composerrequirephpoffice/phpword2.写代码2.1引入点击查看代码usePhpOffice\PhpWord\IOFactory;usePhpOffice\PhpWord\Element\TextRun;usePhpOffice\PhpWord\Element\Text;usePhpOffice\PhpWord\Element\Paragraph;2.2点击查看代码/......
  • Yii2使用modules模块开发Api接口的注意点
    如题:Yii2中使用modules开发Api接口一、新建modules目录``` -components -config -controllers -mail -models -modules//新增 -runtion -tests -traits -vargrant```二、在modules中新建模块目录``` -modules -vueadmin//注意模板目录名称都......
  • PHP 导出 Excel 报错: Formula Error: An unexpected error occurred
    1.问题描述一个项目中用到了需要将用户手机号导出到Excel,最初写完测试是正常的,如下图所示 在后来的某一天,导出手机号突然出现了报错,如下图所示 通过提示我们将问题定位在了B列4867行。这是因为在excel中,单元格中的值如果是以“=”开头,则说明这个单元格是根据其......
  • php对接微信公众号扫码登录
     前言微信公众号扫码登录在安全性、用户体验和数据收集方面优势明显,是目前许多应用程序采用的登录方式之一。无需记住账号密码:用户无需输入和记住账号和密码,只需使用微信扫描二维码即可快速登录。安全性高:微信采用OAuth2.0协议,将用户信息传递给第三方应用程序,而不......
  • PHP关注公众号后网站自动注册并登录的实现
    需求描述在自己网站上点击微信登录,网站自己弹出一个二维码、扫描二维码后弹出公众号的关注界面、只要一关注公众号网站自动登录、第二次扫描登录的时候网站直接登录。大家可以体验一下 「随便找的一个网站」前期准备一个公众号(必须认证,配置服务器)微信开发文档实现原理公众平台......
  • PHP微信扫码登录
    微信扫码登录总体说明:先获取token和ticket,通过微信生成二维码接口生成二维码,把二维码信息添加到数据表中,用户扫码时检测二维码扫描状态,扫描成功后更新二维码状态,跳转页面。 微信开放文档一、数据表qrcord表,用户存储二维码信息,每生成一个二维码生成一条记录,通过openid字段判断......
  • JDK8新特性之Lambda表达式和四大函数接口
    在Java8中,加入了Lambda(Lambdaexpression),在使用它以前我们先聊聊为什么要加入Lamdba,使用它对于编程上有什么好处 一、Lamdba的作用1.在我们需要把一些功能传递给某些方法时,在Java8以前,我们就需要去写匿名内部类。引入lambda表达式后,你可以在一个类中简便的定义参数和方法,替代大......
  • 淘宝订单信息获取接口API,淘宝打单发货接口
    从事电商软件开发的小伙伴,在日常开发任务中,经常会遇到一个需求,就是将淘宝店铺的订单,同步到自己的内部订单管理系统OMS中,进行淘宝打单发货操作。我介绍下如何将订单同步下来,供各位参考。(注意:所有电商平台目前能同步订单的接口要么就不让申请,要么就申请门槛和维护资质的成本很高,具体......
  • 对某个接口进行限流 以 Aop 注解的形式绑定接口 用redis实现
    简单的针对某个接口进行限流,如果需要整体限流的话还是建议在网关上面或者服务器上面动手Controller:@LimitRequest(count=1,time=60*1000*2)@PostMapping("limit")publicStringgetLimitResult(){return"ok";}Annotation:@Retention(R......