PHPの静的
静的メンバーはクラス変数の一種であり、クラスのインスタンスではなくクラス全体に属すると考えることができます。一般的なインスタンス変数とは異なり、静的メンバーは 1 つの変数値のみを保持し、この変数値はすべてのインスタンスに対して有効です。つまり、すべてのインスタンスがこのメンバーを共有します。
$this はクラスの現在のインスタンスのみを表し、self:: はクラス自体を表します。この演算子はクラス外のコードでは使用できず、継承ツリー階層内の位置を識別できません。つまり、拡張クラスで self スコープを使用する場合、self は基本クラスで宣言されたメソッドを呼び出すことができますが、常に拡張クラスでオーバーライドされたメソッドを呼び出します。 $this とは異なり、静的変数を使用する場合は、スコープ修飾子の後に $ 記号を追加する必要があります。
拡張クラスでは、基本クラスのメソッドがオーバーライドされると、親スコープを使用して基本クラスで定義されたメソッドを呼び出します。静的メンバーは親クラスにのみ所属することもできます。メンバーがサブクラスと親クラスの両方で宣言されている場合は、parant:: を使用して、サブクラス内の親クラスの変数にアクセスすることもできます。この場合、親クラスの静的メンバーとサブクラスの静的メンバーは異なる値を保持します。
:: 演算子の左側にクラスの名前を記述すると、クラスのインスタンスの作成を避けるために静的にメンバーにアクセスできます。クラスをインスタンス化する必要がなくなるだけでなく、クラスの各インスタンスが占めるシステム リソースの一部が小さくなるため、より効率的になります。
:: 演算子を使用してメンバー変数にアクセスする場合は、$ 記号の使用に再度注意する必要があります。 PHP は現在、動的静的変数の使用をサポートしていないため、つまり、変更可能な静的変数をサポートしていません。 $this->$var を使用する場合、アクセスされるメンバーは $var に含まれる変数の値です。 $ 記号を使用して変数にアクセスする代わりに、実際にはクラスの定数を探していますが、$this を介して定数にアクセスすることはできません。
PHP6 で提案されている static::scope により、self:: とparent:: を使用する必要がなくなります。関数を実装する最終クラスを指定する場合は、static:: を使用できます。この修飾子は、コードが実行される直前に、継承階層の最後のクラスのメンバーを計算します。 1 つのプロセスは遅延バインディングと呼ばれ、子クラスの静的変数をオーバーライドしたり、親クラスで宣言された関数から最後のメンバーにアクセスしたりすることができます。
場合によっては、すべてのクラス インスタンスで共有され、すべてのクラス インスタンスに関連するが、特定のオブジェクトからは呼び出すことができないフィールドやメソッドを作成することが必要になる場合があります。たとえば、Web ページへの訪問者数を追跡するクラスを作成するとします。クラスをインスタンス化するたびに訪問者数を 0 にリセットする必要はありません。この時点で、フィールドを静的スコープに設定できます。
<?php class visitors { private static $visitors = 0; function __construct() { self::$visitors++; } static function getVisitors() { return self::$visitors; } } /* Instantiate the visitors class. */ $visits = new visitors(); echo visitors::getVisitors()."<br/>"; /* Instantiate another visitors class. */ $visits2 = new visitors(); echo visitors::getVisitors()."<br/>"; ?>
プログラムの実行結果:
1
2
$visitors フィールドは静的に宣言されているため、その値への変更はインスタンス化されたすべてのオブジェクトに反映されます。また、静的フィールドとメソッドは、this とアロー演算子ではなく、self キーワードとクラス名を使用して参照する必要があることに注意してください。これは、「通常の」メソッドを使用して静的フィールドを参照することは不可能であり、構文エラーが発生するためです。
クラス内で $this を使用して静的フィールドを参照することはできません。
静的変数
静的変数は関数のスコープ内にのみ存在する変数ですが、そのような変数の値は関数が実行された後も失われません。つまり、変数は次回も元の値を記憶します。関数が呼び出される時間。変数を静的として定義するには、変数の前に static キーワードを追加するだけです。
クラスでは、static キーワードには主に 2 つの用途があります。1 つは静的メンバーの定義、もう 1 つは静的メソッドの定義です。クラス内では、スコープ修飾子 (::) を使用して、さまざまなレベルのスコープの変数にアクセスできます。
静的メソッド
静的メソッドと非静的メソッドの間には重要な違いがあります。静的メソッドを呼び出すとき、クラスのインスタンスを所有する必要はなくなります。
静的メソッドと非静的メソッドを使用するための原則: まず、メソッドに $this 変数が含まれていない場合は、クラスのインスタンスが必要ない場合は静的メソッドにする必要があります。静的クラス。これにより、インスタンスの化学的な作業が不要になります。さらに、静的メソッドは特定のインスタンスに属さないため、$this 変数を静的メソッドで使用することはできません。

ホット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)

ホットトピック











エラーの理由は、urllib3 ライブラリの例外タイプである NameResolutionError(self.host,self,e)frome です。このエラーの理由は、DNS 解決が失敗したこと、つまり、ホスト名または IP アドレスが試みられたことです。解決できるものが見つかりません。これは、入力された URL アドレスが間違っているか、DNS サーバーが一時的に利用できないことが原因である可能性があります。このエラーを解決する方法 このエラーを解決するにはいくつかの方法があります。 入力された URL アドレスが正しいかどうかを確認し、アクセス可能であることを確認します。 DNS サーバーが利用可能であることを確認します。コマンド ラインで「ping」コマンドを使用してみてください。 DNS サーバーが利用可能かどうかをテストします。プロキシの背後にある場合は、ホスト名の代わりに IP アドレスを使用して Web サイトにアクセスしてみてください。

Python で self の使用法を紹介する前に、まず Python のクラスとインスタンスを紹介しましょう。オブジェクト指向の最も重要な概念はクラスとインスタンスであることはわかっています。クラスは抽象的なテンプレートです。学生のような抽象的なものです。 Student クラスによって表されます。インスタンスはクラスに基づいて作成された特定の「オブジェクト」であり、各オブジェクトはクラスから同じメソッドを継承しますが、そのデータは異なる場合があります。 1. Student クラスを例にします。Python では、クラスは次のように定義されます: classStudent(object):pass(Object) は、クラスがどのクラスから継承するかを示します。Object クラスはすべて

この記事は、vue ソース コードを解釈するのに役立ち、これを使用して Vue2 のさまざまなオプションのプロパティにアクセスできる理由を紹介します。

オブジェクト指向プログラミングでは、継承により、既存のクラスのプロパティとメソッドを継承する新しいクラスを作成できます。この強力な概念により、プログラムのコードの再利用、モジュール性、拡張性が可能になります。親クラスの属性にアクセスする前に、次のことを確認してください。

同僚は、これによって指摘されたバグのために立ち往生しました。Vue2 のこの指摘の問題により、アロー関数が使用され、その結果、対応する props を取得できなくなりました。私がそれを彼に紹介したとき、彼はそれを知りませんでした。その後、私はわざとフロントエンド コミュニケーション グループに目を向けました。これまでのところ、フロントエンド プログラマーの少なくとも 70% はまだそれを理解していません。今日私はそれを共有しますyou this link. もしすべてが間違っている場合 まだ学習していない場合は、大きな口を与えてください。

C 言語における static の役割と使用法: 1. 変数スコープ; 2. ライフサイクル; 3. 内部関数; 4. グローバル変数の変更; 5. 関数の変更; 6. その他の用途; 詳細な紹介: 1. 変数スコープの場合変数の前に static キーワードがある場合、変数のスコープは、変数が宣言されているファイルに制限されます。言い換えると、変数は「ファイル レベルのスコープ」であり、「」の発生を防ぐのに非常に役立ちます。変数の重複定義問題; 2. ライフサイクル、静的変数はプログラム実行開始時に一度初期化され、プログラム終了時に破棄されるなど。

C 言語の static キーワードの実践的な応用シナリオと使用スキル 1. 概要 static は C 言語のキーワードであり、変数や関数を変更するために使用されます。その機能は、プログラムの実行中にライフサイクルと可視性を変更し、変数と関数を静的にすることです。この記事では、static キーワードの実際のアプリケーション シナリオと使用テクニックを紹介し、具体的なコード例を通じて説明します。 2. 静的変数により変数のライフ サイクルが延長される static キーワードを使用してローカル変数を変更すると、変数のライフ サイクルを延長できます。

1. static まず次のプログラムを見てください: publicclassHello{publicstaticvoidmain(String[]args){//(1)System.out.println("Hello, world!");//(2)}}セグメント プログラムは、Java を学習したことのあるほとんどの人には馴染みのあるものです。 Java を学習したことがなくても、C などの他の高級言語を学習したことがある場合でも、このコードの意味は理解できるはずです。これは単に「Hello, world」を出力するだけであり、他に用途はありませんが、静的キーワードの主な目的を示しています。
