検索
ホームページバックエンド開発PHPチュートリアルPHPオブジェクト指向プログラミング(oop)学習記(2) - 静的変数のプロパティとメソッドと遅延バインディング_PHPチュートリアル

static (static) キーワードは、静的メソッドとプロパティを定義するために使用されます。また、静的変数と遅延静的バインディングを定義するためにも使用できます。

1、静的変数静的変数

静的変数はローカル関数スコープ内にのみ存在しますが、プログラムの実行がこのスコープを離れても、その値は失われません。つまり、次回この関数が実行されるときも、変数は元の値を覚えています。変数を静的として定義するには、変数の前に static キーワードを追加するだけです。

コードをコピーする コードは次のとおりです:

function testing()
{
static $a = 1;
$a *= 2;
echo $a."n";
}
testing ();
テスト();
テスト();
テスト();
/**
* 2
* 4
* 8
* 16
* [0.1秒で終了]
*/

静的変数は、再帰関数を処理する方法も提供します。再帰関数は、それ自体を呼び出す関数です。再帰関数を作成するときは、無限に再帰する可能性があるので注意してください。再帰を終了する適切な方法があることを確認する必要があります。

この例では、 testing() 関数は各実行後に $a 変数の値を内部的に保存します。次回 testing() が呼び出されるとき、$a の値が復元され、testing() はこの値を 2 で乗算して出力します。変数の初期デフォルト値は 1 で、この割り当ては変数が初めて初期化されるときにのみ行われます。この操作は、関数の実行ごとに呼び出されることはありません。

2. クラスでの静的要素の使用

static キーワードには、クラス内で主に 2 つの用途があります。1 つは静的メンバーを定義すること、もう 1 つは静的メソッドを定義することです。クラスのプロパティまたはメソッドを static として宣言すると、クラスをインスタンス化せずに直接アクセスできるようになります。インスタンス化されたクラスのオブジェクトを介して静的プロパティにアクセスすることはできません (ただし、静的メソッドはアクセスできます)。 -> 演算子を使用してオブジェクトから静的プロパティにアクセスすることはできません。クラス内では、スコープ修飾演算子を使用して、スコープのさまざまなレベルの変数にアクセスできます。

2.1、静的プロパティ

静的メソッドではオブジェクトを呼び出す必要がないため、疑似変数 $this は静的メソッドでは使用できません。静的変数は、クラスのインスタンスではなく、クラス全体に属すると考えることができます。一般的なインスタンス変数とは異なり、静的プロパティは 1 つの変数値のみを保持し、この変数値はすべてのインスタンスに対して有効です。つまり、すべてのインスタンスがこのプロパティを共有します。

:$a . "n";

}

}$instance1 = new MyObject();$instance1 -> MyMethod();$instance2 = new MyObject();$instance2 -> ();
/* *
*
* 2
* 4
* [0.1秒で完了]
*
 */



$this インジケーターはクラスの現在のインスタンスであり、呼び出し元のオブジェクトへの参照です。

self:: はクラス自体を表します。self:: スコープ修飾子を使用する場合、この演算子はクラス外のコードでは使用できず、継承ツリーの位置でそれ自体を識別することはできません。階層内で。拡張クラスで self:: スコープを使用する場合、self は基本クラスで宣言されたメソッドを呼び出すことができますが、常に拡張クラスでオーバーライドされたメソッドを呼び出します。

parent:: 拡張クラスで、基本クラスのメソッドがオーバーライドされるときに、基本クラスのメソッドにアクセスしたい場合は、parent::
を使用できます。
static:: を使用すると、 self:: とparent:: を使用する必要がなくなります。機能を実装する最終クラスを指定する場合は、static を使用できます。この修飾子は、コードが実行される直前に継承階層の最後のクラスのメンバーを計算します。

2.3、
静的メソッド


静的メソッドのルールは静的変数と同じです。 static キーワードを使用してメソッドを静的としてマークでき、クラス名とスコープ演算子 (::) を使用して静的メソッドにアクセスできます。
静的メソッドと非静的メソッドの間には重要な違いがあります。静的メソッドを呼び出すとき、クラスのインスタンスを所有する必要がなくなりました。

コードをコピーします

コードは次のとおりです:


class MyObjectBase
{
static function MyMethod()
{
static::MyOtherMethod();
}
static function MyOtherMethod()
{
echo 'MyObjectから呼び出されます。';
}
}
class MyExtendObject extends MyObjectBase
{
static function MyOtherMethod()
{
echo 'MyExtendObject から呼び出されます。';
}
}
MyExtendObject::MyMethod();

上記のコード例は、MyExtendObject の MyOtherMethod メソッドを正しく呼び出し、MyExtendObject から呼び出された出力を実行します [0.1 秒で完了]。

メソッドに $this 変数が含まれていない場合、このメソッドは静的メソッドである必要があります。クラスのインスタンスが必要ない場合は、インスタンス化の必要がない静的クラスも使用する必要があります。さらに、静的メソッドは特定のインスタンスに属さないため、$this 変数を静的メソッドで使用することはできません。

2.4、遅延バインディング

static:: を使用すると、 self:: とparent:: を使用する必要がなくなります。機能を実装する最終クラスを指定する場合は、static を使用できます。この修飾子は、コードが実行される直前に継承階層の最後のクラスのメンバーを計算します。このプロセスは遅延バインディングと呼ばれます。

3、概要

静的変数を作成し、デフォルトの初期化値を指定するには、static キーワードを使用します。静的変数は、関数が実行された後も値が変更されない変更された関数変数です。

static キーワードは、クラス内でプロパティやメソッドを変更するために使用することもできます。プロパティで使用すると、プロパティは特定のインスタンスの値を保持しなくなりますが、代わりにクラス全体の値を保持し、静的プロパティをメンバー間で共有できます。

静的メソッドにアクセスするには、スコープ修飾子と呼ばれる (::) を使用できます。この演算子の左側には、クラス名または事前定義されたスコープを指定できます。事前定義されたスコープには、selfparent static が含まれます。演算子の右側は静的メソッドと静的プロパティです。

www.bkjia.com本当http://www.bkjia.com/PHPjc/788636.html技術記事 Static キーワードは、静的メソッドとプロパティを定義するために使用され、静的変数および遅延静的バインディングを定義するためにも使用できます。 1. 静的変数 静的変数 静的変数はローカルにのみ存在します...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?Apr 25, 2025 am 12:16 AM

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッション関連の問題をどのようにデバッグしますか?PHPでセッション関連の問題をどのようにデバッグしますか?Apr 25, 2025 am 12:12 AM

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()が複数回呼び出されるとどうなりますか?session_start()が複数回呼び出されるとどうなりますか?Apr 25, 2025 am 12:06 AM

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでセッションのライフタイムをどのように構成しますか?PHPでセッションのライフタイムをどのように構成しますか?Apr 25, 2025 am 12:05 AM

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

セッションを保存するためにデータベースを使用することの利点は何ですか?セッションを保存するためにデータベースを使用することの利点は何ですか?Apr 24, 2025 am 12:16 AM

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでカスタムセッション処理をどのように実装しますか?PHPでカスタムセッション処理をどのように実装しますか?Apr 24, 2025 am 12:16 AM

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

セッションIDとは何ですか?セッションIDとは何ですか?Apr 24, 2025 am 12:13 AM

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

ステートレス環境(APIなど)でセッションをどのように処理しますか?ステートレス環境(APIなど)でセッションをどのように処理しますか?Apr 24, 2025 am 12:12 AM

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン