PHPの静的変数の紹介

不言
リリース: 2023-04-02 16:02:01
オリジナル
1865 人が閲覧しました

この記事では主に php での静的変数の導入について紹介します。ある参考値があります。今からみんなに共有します。困っている友達は参考にしてください。

1 関数内の静的変数
のみ関数内で動作します。各呼び出しの後、静的変数の値は前の呼び出しに基づいて変更されます。定義時に初期値を代入すると、このステートメントは 1 回だけ実行されます。
例: getdata() 関数 static $c2 = 0 を何回呼び出しても、このステートメントは 1 回だけ実行されます

function getdata(){
static $c2 = 0;//初始化语句
$c2 = $c2 + 1;
echo "$c2\n";
}
getdata();//结果 1
getdata();//结果 2
ログイン後にコピー

2 静的クラス メンバー変数
1. クラスの静的メンバー変数はこのクラスにのみ属しますが、クラスのすべてのインスタンスはこの静的メンバー変数を共有します
2. 静的メンバー変数は次のことを行います。アクセスをインスタンス化する必要がなく、アクセス速度が速くなります。
例:

class C1 {
//use Counter;
static $c2=1;
public function inc() {
static $c;
$c = $c + 1;
echo "$c\n";
}
}
$o = new C1();
$o->inc(); // echo 1
$p = new C1();
$p->inc(); // echo 2
echo'
';
$p::$c2=5;
echo C1::$c2;//echo 5 静态成员变量不需要实例化就能访问,且访问速度快一些
echo'
';
echo $p::$c2;//echo 5
echo'
';
echo $o::$c2;//echo 5
ログイン後にコピー

1.static クラス メソッド
クラスの静的メソッドは、静的メンバー変数にのみアクセスできます。ただし、非静的メンバー変数は含まれません (Yes の場合、エラーが報告されます)

class C3 {
//use Counter;
public static $c3=1;
public $c5 =5;
public static function inc1() {
echo C3::$c3;//
}
public static function inc2() {
echo $this->c5; //会报错 $this不允许出现在静态方法中
}
}
C3::inc1();// echo 1
C3::inc2(); //Fatal error: Uncaught Error: Using $this when not in object context
ログイン後にコピー

2. Trait の静的変数
Trait の静的変数は、異なるクラスで使用されても相互に影響を与えません
For例:

trait Counter {
public function inc() {
static $c = 0;
$c = $c + 1;
echo "$c\n";
}
}
class C1 {
use Counter;
}
class C2 {
use Counter;
}
$o = new C1();
$o->inc(); // echo 1
$o->inc(); // echo 2
$b = new C1();
$b->inc(); // echo 3
$b->inc(); // echo 4
$p = new C2();
$p->inc(); // echo 1
$p->inc(); // echo 2
ログイン後にコピー

以上がこの記事の全内容です。皆様の学習にお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

PHP バックグラウンド コメントの実装

PHP が IP の合法性を検証する方法

php でシミュレートされた多重継承を実装する方法

以上がPHPの静的変数の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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