ArrayAccess介面介紹

2021-08-23 15:37:52 字數 1282 閱讀 3738

下面是 arrayaccess 的定義:

inte***ce arrayaccess

boolean offsetexists($index)

mixed offsetget($index)

void offsetset($index, $newvalue)

void offsetunset($index)

由於php的陣列的強大,很多人在寫 php 應用的時候經常將配置資訊儲存在乙個陣列裡。於是可能在**中到處都是 global。我們換種方式?

如以下**:

//configuration class

class configuration implements arrayaccess

public static function instance()

return self::$config;

} function offsetexists($index)

function offsetget($index)

function offsetset($index, $newvalue)

function offsetunset($index)

} $config = configuration::instance();

print $config["binzy"];

正如你所預料的,程式的輸出是"male"。

如果我們做下面那樣的動作:

$config = configuration::instance();

print $config["binzy"];

$config['jasmin'] = "binzy's lover";

// config 2

$config2 = configuration::instance();

print $config2['jasmin'];

是的,也正如預料的,輸出的將是binzy's lover。

也許你會問,這個和使用陣列有什麼區別呢?目的是沒有區別的,但最大的區別在於封裝。oo 的最基本的工作就是封裝,而封裝能有效將變化置於內部。也就是說,當配置資訊不再儲存在乙個 php 陣列中的時候,是的,應用**無需任何改變。可能要做的,僅僅是為配置方案新增乙個新的策略(strategy)。:

arrayaccess 在進一步完善中,因為現在是沒有辦法 count 的,雖然大多數情況並不影響我們的使用。

參考:1. 《php5 power programming》

2. 《設計模式》

3. 《物件導向分析與設計》

PHP的ArrayAccess介面簡介

最近在研究php微框架slim的原始碼,slim中的依賴注入基於pimple,於是又去學習了一下pimple。對比之前自己寫的依賴注入類,pimple有乙個很新鮮的用法,不是採用 container session storage function c 而是以陣列方式進行注入 container s...

PHP的ArrayAccess介面詳解

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

PHP預定義介面之 ArrayAccess

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