PHPにおける静的クラスと静的変数の使用法の違い、PHP変数の分析
この記事では、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は同じなので、静的メソッド/変数の存在意義は何でしょうか?
静的: クラス メンバーまたはメソッドを静的として宣言すると、クラスをインスタンス化せずに直接アクセスできます。静的メンバーは、クラスに属し、どのオブジェクト インスタンスにも属しません。クラスのオブジェクト インスタンスは共有できます。
例、コードは次のとおりです:
コードをコピーします
コードは次のとおりです:
クラスの人{
// 静的メンバーのプロパティを定義します
パブリック静的 $country = "中国"
;
//静的メンバーメソッドを定義する
パブリック静的関数 my Country() {
// 静的メンバーのプロパティへの内部アクセス
echo "私は".self::$country."人
";
}
}
クラス学生は Person {
を拡張します
関数の勉強() {
echo "私は". "人
";
}
}
// メンバーの属性値を出力します
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 ではないことに注意) を使用します。コードは次のとおりです。
コードをコピーします
コードは次のとおりです:
parent:: $country
親:: my Country()
静的メンバーのプロパティとメソッドへの外部アクセスはクラス名/サブクラス名::、コードは次のとおりです:
コードをコピーします
コードは次のとおりです:
person::$country
人::私の国()
学生::$country
ただし、静的メソッドには通常のオブジェクトを通じてアクセスすることもできます。
例、静的変数を宣言する場合、コードは次のとおりです:
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
if ($count
テスト();
}
$カウント--;
}
?>
注: 静的変数は、上記の例に従って宣言できます。式の結果を使用して宣言内で値を代入すると、解析エラーが発生します。
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/943418.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/943418.html技術記事 PHP における静的クラスと静的変数の使用法の違いの分析 PHP 変数 この記事では、PHP での静的クラスと静的変数の使用法の違いを分析します。参考のためにみんなで共有してください。具体的な分析は以下の通りです...
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。