PHPの静的変数のプロパティとメソッド、遅延バインディングの使い方を詳しく解説
静的変数の type キーワードは static です。この記事は主に、PHP で静的プロパティと静的メソッドを使用する方法と基本的な例、遅延バインディングについて学習するものです
静的 (静的) キーワードは静的メソッドとプロパティを定義するために使用され、静的は静的変数と静的変数を定義するためにも使用できます。 遅延静的バインディング セット。
1. 静的変数 静的変数
静的変数はローカル関数のスコープ内にのみ存在しますが、プログラムの実行がこのスコープを離れても、その値は失われません。つまり、次回この関数が実行されるときも、変数は元の値を覚えています。変数を静的として定義するには、変数の前に static キーワード を追加するだけです。
function testing() { static $a = 1; $a *= 2; echo $a."\n"; } testing(); testing(); testing(); testing(); /** * 2 * 4 * 8 * 16 * [Finished in 0.1s] */
静的変数は、再帰関数を処理する方法も提供します。再帰関数は、それ自体を呼び出す関数です。再帰関数を作成するときは、無限に再帰する可能性があるので注意してください。再帰を終了する適切な方法があることを確認する必要があります。
この例では、 testing() 関数は各実行後に $a 変数の値を内部的に保存します。次回 testing() が呼び出されるとき、$a の値が復元され、testing() はこの値を 2 で乗算して出力します。変数の初期デフォルト値は 1 で、この割り当ては変数が初めて初期化されるときにのみ行われます。この操作は、関数の実行ごとに呼び出されることはありません。
2. クラスでの静的要素の使用
クラスでの static キーワードの主な用途は 2 つあり、1 つは静的メンバーの定義に使用され、もう 1 つは静的メソッドの定義に使用されます。クラスのプロパティまたはメソッドを static として宣言すると、クラスをインスタンス化せずに直接アクセスできるようになります。インスタンス化されたクラスのオブジェクトを介して静的プロパティにアクセスすることはできません (ただし、静的メソッドはアクセスできます)。静的プロパティには、演算子を介してオブジェクトからアクセスできません。クラス内では、スコープ修飾演算子を使用して、スコープのさまざまなレベルの変数にアクセスできます。
2.1、静的プロパティ
静的メソッドはオブジェクトを通じて呼び出す必要がないため、疑似変数 $this は静的メソッドでは使用できません。静的変数は、クラスのインスタンスではなく、クラス全体に属すると考えることができます。一般的なインスタンス変数とは異なり、静的プロパティは 1 つの変数値のみを保持し、この変数値はすべてのインスタンスに対して有効です。つまり、すべてのインスタンスがこのプロパティを共有します。
class MyObject { public static $a = 0; function MyMethod() { self::$a += 2; echo self::$a . "\n"; } } $instance1 = new MyObject(); $instance1 -> MyMethod(); $instance2 = new MyObject(); $instance2 -> MyMethod(); /** * * 2 * 4 * [Finished in 0.1s] * */
$this ポインタはクラスの現在のインスタンスであり、呼び出し元のオブジェクトへの参照です。
self:: はクラス自体を表します。self:: スコープ 修飾子 を使用する場合、この演算子はクラス外のコードでは使用できず、クラス内の位置を識別することもできません。継承ツリー階層。拡張クラスで self:: スコープを使用する場合、self は基本クラスで宣言されたメソッドを呼び出すことができますが、常に拡張クラスでオーバーライドされたメソッドを呼び出します。
parent:: 拡張クラスで、基本クラスのメソッドがオーバーライドされるときに、基本クラスのメソッドにアクセスしたい場合は、parent::
static:: を使用できるため、self:: を使用する必要がなくなりました。および親:: 。機能を実装する最終クラスを指定する場合は、static を使用できます。この修飾子は、コードが実行される直前に継承階層の最後のクラスのメンバーを計算します。
2.3、静的メソッド
静的メソッドのルールは静的変数と同じです。 static キーワードを使用してメソッドを静的としてマークでき、クラス名とスコープ演算子 (::) を使用して静的メソッドにアクセスできます。
静的メソッドと非静的メソッドの間には重要な違いがあります。静的メソッドを呼び出すときに、クラスのインスタンスを所有する必要がなくなりました。
class MyObjectBase { static function MyMethod() { static::MyOtherMethod(); } static function MyOtherMethod() { echo 'called from MyObject.'; } } class MyExtendObject extends MyObjectBase { static function MyOtherMethod() { echo 'called from MyExtendObject.'; } } MyExtendObject::MyMethod();
上記のサンプル コードは、MyExtendObject の MyOtherMethod メソッドを正しく呼び出し、MyExtendObject から呼び出されて出力されます [0.1 秒で完了]。
メソッドに $this 変数が含まれていない場合、このメソッドは静的メソッドである必要があります。クラスのインスタンスが必要ない場合は、インスタンス化の必要がない静的クラスも使用する必要があります。さらに、静的メソッドは特定のインスタンスに属さないため、$this 変数を静的メソッドで使用することはできません。
2.4、遅延バインディング
static:: により、 self:: とparent:: を使用する必要がなくなります。機能を実装する最終クラスを指定する場合は、static を使用できます。この修飾子は、コードが実行される直前に継承階層の最後のクラスのメンバーを計算します。このプロセスは遅延バインディングと呼ばれます。
3. 概要
静的変数を作成し、デフォルトの初期化値を指定するには、static キーワードを使用します。静的変数は、関数が実行された後も値が変更されない変更された関数変数です。
static キーワードは、プロパティとメソッドを変更するためにクラス内で使用することもできます。プロパティで使用すると、プロパティは特定のインスタンスの値を保持しなくなりますが、代わりにクラス全体の値を保持し、静的プロパティをメンバー間で共有できます。
静的メソッドにアクセスするには、スコープ修飾子と呼ばれる (::) を使用できます。この演算子の左側には、クラス名または事前定義されたスコープを指定できます。事前定義されたスコープには、selfparent static が含まれます。演算子の右側は静的メソッドと静的プロパティです。
以上がPHPの静的変数のプロパティとメソッド、遅延バインディングの使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホット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。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
