ホームページ > バックエンド開発 > PHPチュートリアル > ArrayAccess インターフェースの紹介_PHP チュートリアル

ArrayAccess インターフェースの紹介_PHP チュートリアル

WBOY
リリース: 2016-07-13 16:58:42
オリジナル
997 人が閲覧しました

PHP5 には一連の新しいインターフェイスがあります。 HaoHappy が翻訳したこの一連の記事で、そのアプリケーションについて学ぶことができます。同時に、これらのインターフェイスと実装された一部のクラスは、標準 PHP ライブラリ (SPL) に分類されます。クラスのオーバーロードをさらに強化するために、多くの機能が PHP5 に追加されました。 ArrayAccess の目的は、クラスを配列 (PHP の配列) のように見せることです。これは、C# のインデックス機能と非常によく似ています。

ArrayAccess の定義は次のとおりです:

インターフェース ArrayAccess
ブール値の offsetExists($index)
混合オフセットGet($index)
void offsetSet($index, $newvalue)
void offsetUnset($index)

PHP 配列の能力により、多くの人は PHP アプリケーションを作成するときに構成情報を配列に保存することがよくあります。したがって、コード内のあらゆる場所にグローバルが存在する可能性があります。別の方法を試してみましょう?

次のコードのような:

//設定クラス
クラス構成は ArrayAccess を実装します
{

静的プライベート $config;

プライベート $configarray;

プライベート関数 __construct()
{
// 初期化
$this->configarray = array("ビンジー"=>"男性", "ジャスミン"=>"女性");
}

パブリック静的関数instance()
{
//
if (self::$config == null)
{
self::$config = 新しい構成();
}

self::$config を返す;
}

関数 offsetExists($index)
{
return isset($this->configarray[$index]);
}

関数 offsetGet($index) {
return $this->configarray[$index];
}

関数 offsetSet($index, $newvalue) {
$this->configarray[$index] = $newvalue;
}

関数 offsetUnset($index) {
unset($this->configarray[$index]);
}
}

$config = 構成::インスタンス();
print $config["Binzy"];


ご想像のとおり、プログラムの出力は「男性」です。
次のアクションを実行すると:

$config = 構成::インスタンス();
print $config["Binzy"];
$config['ジャスミン'] = "ビンジーの恋人";
//設定2
$config2 = 構成::インスタンス();
print $config2['ジャスミン'];

はい、予想どおり、出力は Binzy's Lover になります。
これと配列を使用することの違いは何ですか?と疑問に思われるかもしれません。目的に違いはありませんが、最大の違いはカプセル化です。 OO の最も基本的なジョブはカプセル化であり、カプセル化により変更を内部に効果的に保持できます。つまり、構成情報が PHP 配列に格納されなくなった場合、アプリケーション コードを変更する必要はありません。実行できることは、構成スキームに新しい戦略 (Strategy) を追加することだけです。 :

ArrayAccess はさらに改良されており、カウントする方法がなくなったため、ほとんどの場合、使用には影響しません。

参考:
1.《PHP5パワープログラミング》
2.「デザインパターン」
3.「オブジェクト指向の分析と設計」

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631387.html技術記事 PHP5 には一連の新しいインターフェイスがあります。 HaoHappy が翻訳したこの一連の記事で、そのアプリケーションについて学ぶことができます。同時に、これらのインターフェイスと一部の実装クラスは標準 PHP L として分類されます...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート