ホームページ > バックエンド開発 > PHPチュートリアル > PHPの関数におけるstaticキーワードの使用例を詳しく解説

PHPの関数におけるstaticキーワードの使用例を詳しく解説

伊谢尔伦
リリース: 2023-03-11 13:46:02
オリジナル
1267 人が閲覧しました

static は php の静的変数です 関数を定義できます では、関数または変数の前に static を追加すると、関数と変数にどのような影響があるでしょうか?見てください。

1) グローバル変数(外部変数)の記述の前に static を付けて、静的グローバル変数を形成します。グローバル変数自体は静的格納メソッドであり、静的グローバル変数も当然静的格納メソッドです。 どちらも保存方法に違いはありません。両者の違いは、非静的グローバル変数の有効範囲がソースプログラム全体であることです。ソースプログラムが複数のソースファイルで構成されている場合、非静的グローバル変数は各ソースファイルで有効になります。 静的グローバル変数はスコープを制限します。つまり、変数が定義されているソース ファイル内でのみ有効であり、同じソース プログラム内の他のソース ファイルでは使用できません。静的グローバル変数のスコープは 1 つのソース ファイルに限定され、そのソース ファイル内の関数でのみ共有できるため、他のソース ファイルでのエラーを回避できます。 2) 上記の分析から、ローカル変数を静的変数に変更すると、その保存方法が変更され、その有効期間が変更されることがわかります。グローバル変数を静的変数に変更すると、そのスコープが変更され、その使用範囲が制限されます。

3) 静的関数は、このドキュメント内でのみ通常の

関数スコープ

とは異なります。現在のソース ファイル内でのみ使用される関数は内部関数(static)として宣言し、内部関数は現在のソース ファイル内に記述して定義する必要があります。現在のソース ファイルの外で使用できる関数については、これらの関数を使用するソース ファイルにこのヘッダー ファイルを含める必要があります。PHP5.3.0 以降では、変数を使用して動的に呼び出すことができます。クラス。ただし、この変数の値をキーワード self、parent、または static にすることはできません。 例 #1 静的メンバーのコード例

<?php
class Foo
{
    public static $my_static = &#39;foo&#39;;
    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 = &#39;Foo&#39;;
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 = &#39;Foo&#39;;
$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 = &#39;foo&#39;;//声明一个静态成员  
    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();
ログイン後にコピー

static キーワードの役割:

PHP での static 変数の使用範囲は、クラスやメソッドの前に追加できるだけではありません。関数の内部変数に static キーワードを追加することもできます。 static 修飾子が追加された変数の値は、関数が実行された後でも失われません。つまり、変数は次回この関数が呼び出されたときにも元の値を記憶しています。

以上がPHPの関数におけるstaticキーワードの使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート