PHP_PHP チュートリアルの 6 つの定義済みインターフェイスの紹介
PHPの6つの定義済みインターフェースの紹介
この記事では、PHPの6つの定義済みインターフェースの紹介を中心に、Traversable、Iterator、IteratorAggregate、ArrayAccess、Serializable、Closureについて説明します。ダウン
PHP には、以下に紹介する 6 つのインターフェースが事前定義されています。
1.トラバース可能なトラバーサルインターフェース
実際、これは PHP で使用できるインターフェースではありません。その目的の 1 つは、クラスを横断できるかどうかを検出することです。
?
1 2 3 |
if(Traversable の $class インスタンス) { //foreach } |
2.イテレーターインターフェース
インターフェースの概要:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Iterator は Traversable を拡張します { //現在のインデックスカーソルが指す要素を返します 抽象的な公共混合流(void) //現在のインデックスカーソルが指す要素のキー名を返します 抽象公開スカラーキー(無効) //現在のインデックス カーソルを次の要素を指すように移動します 抽象パブリック void next(void) //最初の要素を指すようにインデックス カーソルをリセットします 抽象パブリック void rewind(void) //現在のインデックス カーソルが要素を指しているかどうかを判断します。これは、rewind() または next() を呼び出すときによく使用されます 抽象パブリックブール値有効(void) } |
上記により、クラスで基本的な反復関数を実装できるようになります。次のように反復呼び出しシーケンスを確認できます。
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
クラス myIterator は Iterator { を実装します プライベート $位置 = 0 ;プライベート $array = array( 「最初の要素」、 「第 2 要素」、 「ラストエレメント」、 );
パブリック関数 __construct () { $this -> 位置 = 0 ; }
関数巻き戻し() { var_dump ( __METHOD__ ); $this -> 位置 = 0 ; }
関数現在の() { var_dump ( __METHOD__ ); $this -> 配列 [ $this -> 位置 ]; ; }
ファンクションキー(){ var_dump ( __METHOD__ ); $this を返す -> 位置 ; }
次の関数 () { var_dump ( __METHOD__ ); ++ $this -> }
関数が有効です () { var_dump ( __METHOD__ ); return isset( $this -> 配列 [ $this -> 位置 ]); } }
$it = 新しい myIterator ;
foreach( $it as $key => $value ) { var_dump ( $key , $value ); エコー「ン」 ; }
|
インターフェースの概要:
?
2 3 4 5
|
IteratorAggregate は Traversable を拡張します {
//外部イテレータを取得する abstract public Traversable getIterator (void) }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
クラス myData は IteratorAggregate を実装します { public $property1 = "公共プロパティ 1" ; public $property2 = "公共プロパティ 2" ; public $property3 = "公共プロパティ 3" ;
パブリック関数 __construct () { $this -> property4 = "最後のプロパティ" ; }
パブリック関数 getIterator () { 新しい ArrayIterator ( $this ) を返します; } }
$obj = 新しい myData ;
foreach( $obj as $key => $value ) { var_dump ( $key , $value ); エコー「ン」 ; } |
4.ArrayAccess 配列アクセスインターフェース
インターフェースの概要:
?
1 2 3 4 5 6 7 |
配列アクセス { /* メソッド */ abstract public boolean offsetExists (mixed $offset) //オフセット位置が存在するかチェック abstract publicmixedoffsetGet(mixed$offset) //オフセット位置の値を取得します abstract public void offsetSet (mixed $offset ,mixed $value ) //オフセット位置の値を設定します abstract public void offsetUnset (mixed $offset) //オフセット位置の値をリセットします } |
オブジェクトは次のように配列のようにアクセスできます。
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
クラスobjはarrayaccessを実装します{ プライベート $container = array(); パブリック関数 __construct () { $this -> コンテナ = 配列( ; 「1」 => 1 、「2」 => 2 、 「3」 => 3 、 ); } パブリック関数 offsetSet ( $offset , $value ) { if ( is_null ( $offset )) { $this -> コンテナ [] = $value ; } 他 { $this -> コンテナ [ $offset ] = $value ; } } パブリック関数 offsetExists ( $offset ) { return isset( $this ->container [ $offset ]); } パブリック関数 offsetUnset ( $offset ) { unset( $this -> コンテナ [ $offset ]); } パブリック関数 offsetGet ( $offset ) { return isset( $this -> コンテナ [ $offset ]) ? $this -> コンテナ [ $offset ] : null ; } }
$obj = 新しいオブジェクト ;
var_dump (isset( $obj [ "two" ])); var_dump ( $obj [ "two" ]); unset( $obj [ "two" ]); var_dump (isset( $obj [ "two" ])); $obj [ "two" ] = "値" ; var_dump ( $obj [ "two" ]); $obj [] = '追加 1' ; $obj [] = '追加 2' ; $obj [] = '追加 3' ; print_r ( $obj );
|
インターフェースの概要:
?
1 2 3 4 5 6
|
シリアル化可能{
/* メソッド */ abstract public stringserialize (void) //オブジェクトの文字列表現 abstract public mixed unserialize ( string $serialized ) // オブジェクトを構築します }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
クラスobjはSerializable { を実装しますプライベート $データ ; パブリック関数 __construct () { $this -> data = "私の個人データ" ; } パブリック関数serialize() { シリアル化を返す ( $this -> データ ); } パブリック関数 unserialize ( $data ) { $this -> データ = アンシリアル化 ( $data ); } パブリック関数 getData() { $this -> データを返す ; ;} }
$obj = 新しいオブジェクト ; $ser = シリアル化 ( $obj ); print_r($ser); $newobj = アンシリアライズ ( $ser ); print_r($newobj); |
6.締めくくり
インターフェースの概要:
?
1 2 3 4 5 6 |
クロージング{ /* メソッド */ __construct (void) //インスタンス化を禁止するために使用されるコンストラクター public static Closure binding ( Closure $closure , object $newthis [,mixed $newscope = 'static' ] ) //クロージャーをコピーし、指定された $this オブジェクトとクラス スコープをバインドします。 public Closure bindingTo ( object $newthis [,mixed $newscope = 'static' ] ) //現在のクロージャ オブジェクトをコピーし、指定された $this オブジェクトとクラス スコープをバインドします。 } |
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
クラスA { プライベート静的 $sfoo = 1 ; プライベート $ifoo = 2; } $cl1 = 静的関数() { A を返す :: $sfoo ; }; $cl2 = function() { $this を返します -> ifoo ; ;};
$bcl1 = クロージャ :: バインド ( $cl1 , null , 'A' ); $bcl2 = クロージャ :: バインド ( $cl2 , new A (), 'A' ); エコー $bcl1 (), "n" ; エコー $bcl2 (), "n" ; |

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
