static は php の静的変数です 関数を定義できます では、関数または変数の前に static を追加すると、関数と変数にどのような影響があるでしょうか?見てください。
1) グローバル変数(外部変数)の記述の前に static を付けて、静的グローバル変数を形成します。グローバル変数自体は静的格納メソッドであり、静的グローバル変数も当然静的格納メソッドです。 どちらも保存方法に違いはありません。両者の違いは、非静的グローバル変数の有効範囲がソースプログラム全体であることです。ソースプログラムが複数のソースファイルで構成されている場合、非静的グローバル変数は各ソースファイルで有効になります。 静的グローバル変数はスコープを制限します。つまり、変数が定義されているソース ファイル内でのみ有効であり、同じソース プログラム内の他のソース ファイルでは使用できません。静的グローバル変数のスコープは 1 つのソース ファイルに限定され、そのソース ファイル内の関数でのみ共有できるため、他のソース ファイルでのエラーを回避できます。 2) 上記の分析から、ローカル変数を静的変数に変更すると、その保存方法が変更され、その有効期間が変更されることがわかります。グローバル変数を静的変数に変更すると、そのスコープが変更され、その使用範囲が制限されます。
3) 静的関数は、このドキュメント内でのみ通常の
関数スコープとは異なります。現在のソース ファイル内でのみ使用される関数は内部関数(static)として宣言し、内部関数は現在のソース ファイル内に記述して定義する必要があります。現在のソース ファイルの外で使用できる関数については、これらの関数を使用するソース ファイルにこのヘッダー ファイルを含める必要があります。PHP5.3.0 以降では、変数を使用して動的に呼び出すことができます。クラス。ただし、この変数の値をキーワード self、parent、または static にすることはできません。 例 #1 静的メンバーのコード例
<?php class Foo { public static $my_static = 'foo'; public function staticValue() { return self::$my_static; } } class Bar extends Foo { public function fooStatic() { return parent::$my_static; } } print Foo::$my_static . " "; $foo = new Foo(); print $foo->staticValue() . " "; print $foo->my_static . " "; // Undefined "Property" my_static print $foo::$my_static . " "; $classname = 'Foo'; print $classname::$my_static . " "; // PHP 5.3.0之后可以动态调用 print Bar::$my_static . " "; $bar = new Bar(); print $bar->fooStatic() . " "; ?>
例 #2 静的メソッドのコード例
<?php class Foo { public static function aStaticMethod() { // ... } } Foo::aStaticMethod(); $classname = 'Foo'; $classname::aStaticMethod(); // As of PHP 5.3.0 ?>
クラスでの
Static キーワードの使用に関して、PHP マニュアルでは次の規則が示されています。
1. クラス メンバーを宣言する またはメソッドが静的である場合、クラスをインスタンス化せずに直接アクセスできます。静的メンバー (静的メソッドを除く) には、オブジェクトを通じてアクセスできません。 2. 静的メソッドはオブジェクトを通じて呼び出す必要がないため、疑似変数 $this は静的メソッドでは使用できません。
3. オブジェクトは -> 演算子を使用して静的プロパティにアクセスできません。4. :: メソッドを使用して非静的メソッドを呼び出すと、E_STRICT レベルのエラーが発生します。
次に、第 4 条に注目してみましょう。実行環境: (Win32) PHP/5.3.3
class Foo{ public static $my_static = 'foo';//声明一个静态成员 public function staticValue() {//静态方法 return self::$my_static;// } public function run(){//非静态方法 return "abc <br>"; } public function callrun() { return self::run();//用self::方式调用一个非静态方法 } } echo Foo::$my_static . "<br >"; echo Foo::run();//用className::方法名调用非静态方法 echo Foo::callrun();
以上がPHPの関数におけるstaticキーワードの使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。