PHP的ArrayAccess介面簡介

2021-07-09 03:57:15 字數 1626 閱讀 4709

最近在研究php微框架slim的原始碼,slim中的依賴注入基於pimple,於是又去學習了一下pimple。

對比之前自己寫的依賴注入類,pimple有乙個很新鮮的用法,不是採用

$container->session_storage = function

($c) ;

而是以陣列方式進行注入:

$container['session_storage'] = function

($c) ;

看原始碼時才發現原來訣竅就在php5提供的arrayaccess介面上。

php文件位址如下:

官方定義:提供像訪問陣列一樣訪問物件的能力的介面。

該介面主要定義了四個抽象方法:

abstract

public boolean offsetexists ( mixed $offset ) #檢查資料是否存在

abstract

public mixed offsetget ( mixed $offset ) #獲取資料

abstract

public void offsetset ( mixed $offset , mixed $value ) #設定資料

abstract

public void offsetunset ( mixed $offset ) #刪除資料

下面以乙個簡單的例子來實際說明下該介面的使用:

<?php

class

container

implements

arrayaccess

public

function

offsetget

($key)

public

function

offsetset

($key, $value)

public

function

offsetunset

($key)

}$c = new container();

$c['name'] = 'ben'; //呼叫了offsetset

echo

$c['name']."

"; //呼叫了offsetget

echo

empty($c['age'])."

"; //呼叫了offsetexists

unset($c['name']); //呼叫了offsetunset

echo

empty($c['name']);

執行結果如下:

you're trying to set something

you're trying to get something

benyou're trying to check if something exist

1you're trying to unset something

you're trying to check if something exist

1

PHP的ArrayAccess學習筆記

下面是 arrayaccess 的摘要 arrayaccess由於php的陣列的強大,很多人在寫 php 應用的時候經常將配置資訊儲存在乙個陣列裡。下面就來介紹下如何實現像訪問陣列一樣訪問物件。class objimplements arrayaccess set操作 public function...

PHP的ArrayAccess介面詳解

陣列式訪問介面,該介面的作用是提供像訪問陣列一樣訪問物件的能力 arrayaccess arrayandobjectaccess 該類允許以陣列或物件的方式進行訪問 author 瘋狂老司機 class arrayandobjectaccess implements arrayaccess 以物件方...

PHP預定義介面之 ArrayAccess

arrayaccess 的作用是使得你的物件可以像陣列一樣可以被訪問。應該說 arrayaccess 在php5中才開始有的,php5中加入了很多新的特性,當然也使類的過載也加強了,php5 中新增了一系列介面,這些介面和實現的 class 統稱為 spl。這個介面定義了4個必須要實現的方法 下面是...