ホームページ > バックエンド開発 > PHPチュートリアル > php_PHP チュートリアルでの静的静的クラスと静的静的変数の使用法の違い

php_PHP チュートリアルでの静的静的クラスと静的静的変数の使用法の違い

WBOY
リリース: 2016-07-20 11:10:47
オリジナル
872 人が閲覧しました

静的とは、静的オブジェクトまたは静的変数を定義することです。この記事の関連する例を読んだ後、静的で定義された変数またはクラス メソッドの特性がわかります。

1. オブジェクト $object = new Class() を作成し、変数/メソッドがアクセス可能な場合は、「->」を使用して $object->attribute/function を呼び出します。
2. 静的か非静的かに関係なく、クラスのメソッド/変数: class::attribute/function を直接呼び出します。ただし、前提条件があります:
A. 変数の場合、その変数にアクセスできる必要があります。
B. メソッドの場合、アクセス可能であることに加えて、次の条件も満たす必要があります。
b1) 静的メソッドの場合、特別な条件はありません。
b2) 非静的メソッドの場合。 、メソッド内で $this が使用されない、つまり非静的変数/メソッドが呼び出されないように変更する必要があります。もちろん、静的変数/メソッドを呼び出すことには問題はありません。

次に、$object->… の使用と class::…: の使用の違いを見てみましょう。 $object->… を使用する場合、オブジェクトを作成するためにコンストラクターを実行する必要があります
2。 . class:: … を使用する 静的メソッド/変数を呼び出す場合、オブジェクトを作成するためにコンストラクターを実行する必要はありません。
3. 非静的メソッド/変数を呼び出す場合は、オブジェクトを作成するコンストラクター。

すると、2と3は同じなので、静的メソッド/変数の存在意義は何でしょうか?

static static
クラス メンバーまたはメソッドを static として宣言すると、クラスをインスタンス化せずに直接アクセスできます。オブジェクトを介して静的メンバー (静的メソッドを除く) にアクセスすることはできません。静的メンバーはクラスに属し、どのオブジェクト インスタンスにも属しませんが、クラスのオブジェクト インスタンスは共有できます。

例:

コードは次のとおりですコードをコピーします中国私は中国人です
Class Person{
// 静的メンバーのプロパティを定義します
Public static $country = "China";
// 静的メンバーのメソッドを定義します
Public static Function Mycountry () {
// 静的メンバーのプロパティへの内部アクセス © echo "I am" .Self :: $ country "People & lt;" /& gt; "; ERSON {
functionstudy() {
echo "I am".parent::$country."人
";
}
}
// メンバー属性値を出力
echo Person::$country."< ;br />"; // 出力: China
$p1 = new Person();
//echo $p1->country; // 書き方が間違っています
// static にアクセスしますmember method
Person::my Country() ; // 出力: 私は中国人です
// 静的メソッドにはオブジェクトを通じてアクセスすることもできます:
$p1->my Country();

// メンバー属性値を出力しますサブクラス
echo Student::$country."
"; // 出力: 中国
$t1 = new Student();
$t1->study(); // 出力: 私は中国人です

?>





Run この例の出力は次のとおりです:

私は中国人です

中国

私は中国人です

概要
クラス内の静的メンバー属性またはメソッドにアクセスするには、self を使用します:: ($slef ではないことに注意してください)、例:



コードは次のとおりです

コードをコピーslef:: $country
slef:: my Country()

親クラスにアクセスするにはサブクラス内の静的メンバーのプロパティまたはメソッドを使用するには、parent:: ($parent ではないことに注意してください) を使用します。例:
コードは次のとおりです

コードをコピー parent:: $country本当
parent:: my Country ()

静的メンバーのプロパティとメソッドへの外部アクセスは、クラス名/サブクラス名:: です。例:

コードは次のとおりです コードをコピー
person::$country
person::my Country()
Student:: $country

ただし、静的メソッドには通常のオブジェクトを通じてアクセスすることもできます。


静的変数の宣言例

コードは以下の通りです コードをコピー

function foo(){
static $int = 0;// 正しい
static $int = 1+2 ; // (式なので) 間違っています
static $int = sqrt(121) // (これも式なので)

$int++;
echo $int;
}
? >

静的変数の使用例

コードは以下の通りです コードをコピー
function Test()
{
static $w3sky = 0;
エコー$w3sky;
$w3sky++;
}
?>

これで、Test() 関数が呼び出されるたびに、$w3sky の値が出力され、1 ずつ増加します。


静的変数は、再帰関数を処理する方法も提供します。再帰関数は、それ自体を呼び出す関数です。再帰関数を作成するときは、無限に再帰する可能性があるので注意してください。再帰を終了する適切な方法があることを確認する必要があります。静的変数 $count を使用して、再帰的に 10 までカウントするこの単純な関数を見てみましょう。 静的変数 $count を使用して、いつ停止するかを決定します。

Function Test()

{ static $count = 0; $count++; if ($count Test(); }
echo $count;
$count --;

}
?> ;




注: 静的変数は、上の例に示すように宣言できます。これを宣言内の式の結果に代入すると、解析エラーが発生します。

PHP の静的変数の使用方法の詳細



http://www.bkjia.com/PHPjc/444700.html

www.bkjia.com

http://www.bkjia.com/PHPjc/444700.html
技術記事

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