目次
phpにおける静的クラスと静的変数の使い方の違いを分析します
ホームページ バックエンド開発 PHPチュートリアル PHP_PHP チュートリアルにおける静的クラスと静的変数の違いの分析

PHP_PHP チュートリアルにおける静的クラスと静的変数の違いの分析

Jul 13, 2016 am 10:09 AM
php static そして 分析する 違い 変数 使用法 親切 静的

phpにおける静的クラスと静的変数の使い方の違いを分析します

静的とは、静的オブジェクトまたは静的変数を定義することです。関連する例を読んだ後、静的で定義される変数またはクラスメソッドの特徴を理解します。この記事で。

1. オブジェクト $object = new Class() を作成し、変数/メソッドがアクセス可能な場合は、「->」を使用して $object->attribute/function を呼び出します。

2. 静的か非静的かに関係なく、クラスのメソッド/変数: class::attribute/function を直接呼び出します。ただし、前提条件があります。

A. 変数の場合は、その変数にアクセスできる必要があります。

B. メソッドの場合、メソッドがアクセス可能であることに加えて、要件も満たす必要があります。

①静的メソッドであれば特別な条件はありません

② 非静的メソッドの場合は、$this を使用しない、つまり非静的変数/メソッドを呼び出さないようにメソッドを変更する必要があります。 もちろん、静的変数/メソッドを呼び出しても問題ありません。メソッド

それでは、 $object->… の使用と class::…:

の使用の違いを見てみましょう

1. $object->…を使用する場合、コンストラクターを実行してオブジェクトを作成する必要があります。

2. オブジェクトを作成するコンストラクターを実行せずに、class::... を使用して静的メソッド/変数を呼び出します。

3. class::... を使用して非静的メソッド/変数を呼び出します。オブジェクトを作成するためにコンストラクターを実行する必要はありません。

すると、2と3は同じなので、静的メソッド/変数の存在意義は何でしょうか?

静的: クラス メンバーまたはメソッドを静的として宣言すると、クラスをインスタンス化せずに直接アクセスできます。静的メンバーは、クラスに属し、どのオブジェクト インスタンスにも属しません。クラスのオブジェクト インスタンスは共有できます。

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

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

クラスの人{

//静的メンバーのプロパティを定義します

public static $country = "中国";
//静的メンバーメソッドを定義します
パブリック静的関数 my Country() {
// 静的メンバーのプロパティへの内部アクセス
echo "私は".self::$country."人
";
}
}
クラス学生が人を拡張します {
関数の勉強() {
echo "私は".parent::$country."人
";
}
}
// メンバーの属性値を出力します
echo Person::$country."
" // 出力: 中国
$p1 = 新しい人();
//echo $p1->country; // 書き方が間違っています
//静的メンバーメソッドにアクセスします
Person::my Country(); // 出力: 私は中国人です
// 静的メソッドにはオブジェクトを通じてアクセスすることもできます:
$p1->my Country();

// サブクラスのメンバー属性値を出力します
echo Student::$country."
" // 出力: 中国
$t1 = 新しい学生();
$t1->study(); // 出力: 私は中国人です
?>


この例を実行すると、次のように出力されます:
中国

私は中国人です

私は中国人です
中国
私は中国人です



概要: クラス内の静的メンバー属性またはメソッドにアクセスするには、self:: ($slef ではないことに注意) を使用します。コードは次のとおりです。

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

slef:: $country

slef::my Country()

サブクラス内の親クラスの静的メンバーのプロパティまたはメソッドにアクセスするには、parent:: ($parent ではないことに注意) を使用します。コードは次のとおりです。

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

親:: $country

親::my Country()

静的メンバーのプロパティとメソッドへの外部アクセスはクラス名/サブクラス名::、コードは次のとおりです:

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

人::$国

人::私の国()

学生::$国

ただし、静的メソッドには通常のオブジェクトを通じてアクセスすることもできます。

例、静的変数を宣言する場合、コードは次のとおりです:

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


関数 foo(){

static $int = 0 // 正しい

; static $int = 1+2; // (式なので) 間違っています

static $int = sqrt(121); // 間違っています (式でもあるので)

$int++;
エコー $int;
}
?>


例、静的変数の使用例、コードは次のとおりです:

コードは次のとおりです:
関数 Test()
{

静的 $w3sky = 0;

エコー $w3sky;

$w3sky++;
}
?>


これで、Test() 関数を呼び出すたびに $w3sky の値が出力され、1 ずつ増加します。


静的変数は再帰関数を処理する方法も提供します。再帰関数はそれ自体を呼び出す関数です。再帰関数は無限に再帰する可能性があるため、再帰を終了するための十分なメソッドがあることを確認する必要があります。この単純な関数は、静的変数 $count を使用して再帰的に 10 までカウントし、いつ停止するかを決定します。

静的変数と再帰関数の例、コードは次のとおりです:

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

関数 Test()
{
静的 $count = 0;

$count++;
エコー $count;
if ($count テスト();
}
$count--;
}
?>


注: 静的変数は、上記の例に従って宣言できます。式の結果を使用して宣言内で値を代入すると、解析エラーが発生します。

http://www.bkjia.com/PHPjc/944486.html

tru​​ehttp://www.bkjia.com/PHPjc/944486.html技術記事 phpにおける静的クラスと静的変数の違いを分析します。 静的とは、静的オブジェクトまたは静的変数を定義することです。 静的で定義される変数やクラスメソッドの特徴については、こちらの記事をご覧ください...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

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

C言語関数の基本的な要件は何ですか C言語関数の基本的な要件は何ですか Apr 03, 2025 pm 10:06 PM

C言語関数は、コードモジュール化とプログラム構築の基礎です。それらは、宣言(関数ヘッダー)と定義(関数体)で構成されています。 C言語は値を使用してパラメーターをデフォルトで渡しますが、外部変数はアドレスパスを使用して変更することもできます。関数は返品値を持つか、または持たない場合があり、返品値のタイプは宣言と一致する必要があります。機能の命名は、ラクダを使用するか、命名法を強調して、明確で理解しやすい必要があります。単一の責任の原則に従い、機能をシンプルに保ち、メンテナビリティと読みやすさを向上させます。

一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 Apr 06, 2025 am 12:03 AM

PHP8では、一致式は、式の値に基づいて異なる結果を返す新しい制御構造です。 1)Switchステートメントに似ていますが、実行ステートメントブロックの代わりに値を返します。 2)一致式の式は厳密に比較され、セキュリティが向上します。 3)スイッチステートメントの脱落の可能性を回避し、コードのシンプルさと読みやすさを向上させます。

XPathを使用して、JavaScriptの指定されたDOMノードから検索する方法は? XPathを使用して、JavaScriptの指定されたDOMノードから検索する方法は? Apr 04, 2025 pm 11:15 PM

JavaScriptのDOMノードの下でのXpath検索方法の詳細な説明、XPath式に基づいてDOMツリーから特定のノードを見つける必要があることがよくあります。あなたがする必要があるなら...

CとC#の違いと接続は何ですか? CとC#の違いと接続は何ですか? Apr 03, 2025 pm 10:36 PM

CとC#には類似点がありますが、それらは完全に異なります。Cはプロセス指向の手動メモリ管理、およびシステムプログラミングに使用されるプラットフォーム依存言語です。 C#は、デスクトップ、Webアプリケーション、ゲーム開発に使用されるオブジェクト指向のガベージコレクション、およびプラットフォーム非依存言語です。

クロスサイトリクエストフォーファリー(CSRF)とは何ですか?また、PHPにCSRF保護をどのように実装しますか? クロスサイトリクエストフォーファリー(CSRF)とは何ですか?また、PHPにCSRF保護をどのように実装しますか? Apr 07, 2025 am 12:02 AM

PHPでは、予測不可能なトークンを使用して、CSRF攻撃を効果的に防ぐことができます。特定の方法には次のものが含まれます。1。フォームのCSRFトークンを生成および埋め込みます。 2.リクエストを処理するときにトークンの有効性を確認します。

C言語関数の概念 C言語関数の概念 Apr 03, 2025 pm 10:09 PM

C言語関数は再利用可能なコードブロックです。彼らは入力を受け取り、操作を実行し、結果を返すことができます。これにより、再利用性が改善され、複雑さが軽減されます。関数の内部メカニズムには、パラメーターの渡し、関数の実行、および戻り値が含まれます。プロセス全体には、関数インラインなどの最適化が含まれます。単一の責任、少数のパラメーター、命名仕様、エラー処理の原則に従って、優れた関数が書かれています。関数と組み合わせたポインターは、外部変数値の変更など、より強力な関数を実現できます。関数ポインターは機能をパラメーターまたはストアアドレスとして渡し、機能への動的呼び出しを実装するために使用されます。機能機能とテクニックを理解することは、効率的で保守可能で、理解しやすいCプログラムを書くための鍵です。

PHP関数引数と配列の開梱で...(SPLAT)演算子の目的と使用について説明してください。 PHP関数引数と配列の開梱で...(SPLAT)演算子の目的と使用について説明してください。 Apr 06, 2025 am 12:07 AM

PHPの...(SPLAT)演算子は、機能パラメーターと配列を開梱するために使用され、コードのシンプルさと効率を向上させます。 1)関数パラメーター解放:アレイ要素をパラメーターとして関数に渡します。 2)配列の開梱:アレイを別の配列または関数パラメーターに解除します。

See all articles