php 常用的接口和函数

ArrayAccess

--- interface to provide accessing to objects as arrays 提供以数组形式访问对象的接口。

interface synopsis 接口需要实现下面几个方法

php 复制代码
interface ArrayAccess {
/* Methods */
public offsetExists(mixed $offset): bool
public offsetGet(mixed $offset): mixed
public offsetSet(mixed $offset, mixed $value): void
public offsetUnset(mixed $offset): void
}

basic usage 基础用法 实现访问数组的方式访问接口

php 复制代码
<?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);
?>

the above example will output something similar to : 输出结果

php 复制代码
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
        )

)

php官网ArrayAccess

相关推荐
BingoGo10 小时前
PHP8.6 新的 RFC 提案 Context Managers 优雅管理资源生命周期
后端·php
JaguarJack10 小时前
PHP8.6 新的 RFC 提案 Context Managers 优雅管理资源生命周期
php·服务端
月下的郁王子11 小时前
进阶学习 PHP 中的二进制和位运算
android·学习·php
饭九钦vlog15 小时前
修复重装机kali机器上不了网络域名问题一键脚本
服务器·网络·php
未来之窗软件服务17 小时前
幽冥大陆(二十九)监控平台协议常见地址——东方仙盟练气期
开发语言·php·东方仙盟·东方仙盟sdk·监控协议
拾忆,想起18 小时前
Dubbo网络延迟全链路排查指南:从微服务“快递”到光速传输
网络·网络协议·微服务·架构·php·dubbo
q***06291 天前
PHP进阶-在Ubuntu上搭建LAMP环境教程
开发语言·ubuntu·php
life码农1 天前
在 Laravel框架 Blade 模板中显示原始的 {{ }} 符号的几种方法
php·laravel
Chef_Chen1 天前
数据科学每日总结--Day25--区块链
开发语言·php
chjqxxxx1 天前
php使用ffmpeg实现视频随机截图并转成图片
ffmpeg·php·音视频