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

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

Jul 13, 2016 pm 04:58 PM
php5 導入 存在する インターフェース 翻訳する

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 として分類されます...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Edge ブラウザに付属の翻訳 Web ページが見つからない場合はどうすればよいですか? Edge ブラウザに付属の翻訳 Web ページが見つからない場合はどうすればよいですか? Mar 14, 2024 pm 08:50 PM

Edge ブラウザに付属の翻訳 Web ページが見つからない場合はどうすればよいですか?

字幕なしで映画を見ても心配しないでください。 Xiaomi、日本語と韓国語の翻訳のためのリアルタイム字幕Xiaoai Translationの開始を発表 字幕なしで映画を見ても心配しないでください。 Xiaomi、日本語と韓国語の翻訳のためのリアルタイム字幕Xiaoai Translationの開始を発表 Jul 22, 2024 pm 02:11 PM

字幕なしで映画を見ても心配しないでください。 Xiaomi、日本語と韓国語の翻訳のためのリアルタイム字幕Xiaoai Translationの開始を発表

コンピュータのマザーボードの内部インターフェイスとは何ですか? コンピュータのマザーボードの内部インターフェイスに関する推奨される入門 コンピュータのマザーボードの内部インターフェイスとは何ですか? コンピュータのマザーボードの内部インターフェイスに関する推奨される入門 Mar 12, 2024 pm 04:34 PM

コンピュータのマザーボードの内部インターフェイスとは何ですか? コンピュータのマザーボードの内部インターフェイスに関する推奨される入門

Google Chromeの組み込み翻訳が失敗する問題を解決するにはどうすればよいですか? Google Chromeの組み込み翻訳が失敗する問題を解決するにはどうすればよいですか? Mar 13, 2024 pm 08:46 PM

Google Chromeの組み込み翻訳が失敗する問題を解決するにはどうすればよいですか?

Go 言語の一般的なプログラミング パラダイムと設計パターン Go 言語の一般的なプログラミング パラダイムと設計パターン Mar 04, 2024 pm 06:06 PM

Go 言語の一般的なプログラミング パラダイムと設計パターン

華宜山Heart of the Moon Lu Shuのスキルと特性の紹介 華宜山Heart of the Moon Lu Shuのスキルと特性の紹介 Mar 23, 2024 pm 05:30 PM

華宜山Heart of the Moon Lu Shuのスキルと特性の紹介

なぜGoogle Chromeは中国語を翻訳できないのでしょうか? なぜGoogle Chromeは中国語を翻訳できないのでしょうか? Mar 11, 2024 pm 04:04 PM

なぜGoogle Chromeは中国語を翻訳できないのでしょうか?

PHP インターフェースの概要とその定義方法 PHP インターフェースの概要とその定義方法 Mar 23, 2024 am 09:00 AM

PHP インターフェースの概要とその定義方法

See all articles