ホームページ > バックエンド開発 > PHPチュートリアル > PHP_PHP チュートリアルにおける静的クラスと静的変数の違いの分析

PHP_PHP チュートリアルにおける静的クラスと静的変数の違いの分析

WBOY
リリース: 2016-07-13 10:09:39
オリジナル
956 人が閲覧しました

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は同じなので、静的メソッド/変数の存在意義は何でしょうか?

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

例、コードは次のとおりです:

コードは次のとおりです:

クラスの人{

//静的メンバーのプロパティを定義します

public static $country = "中国";
//静的メンバーメソッドを定義します
パブリック静的関数 my Country() {
// 静的メンバーのプロパティへの内部アクセス
echo "私は".self::$country."人
";
}
}
クラス学生が人を拡張します {
関数の勉強() {
echo "私は".parent::$country."人
";
}
}
// メンバーの属性値を出力します
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 ではないことに注意) を使用します。コードは次のとおりです。

コードは次のとおりです:

親:: $country

親::my Country()

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

コードは次のとおりです:

人::$国

人::私の国()

学生::$国

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

例、静的変数を宣言する場合、コードは次のとおりです:

コードは次のとおりです:


関数 foo(){

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++;
エコー $count;
if ($count テスト();
}
$count--;
}
?>


注: 静的変数は、上記の例に従って宣言できます。式の結果を使用して宣言内で値を代入すると、解析エラーが発生します。

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

tru​​ehttp://www.bkjia.com/PHPjc/944486.html技術記事 phpにおける静的クラスと静的変数の違いを分析します。 静的とは、静的オブジェクトまたは静的変数を定義することです。 静的で定義される変数やクラスメソッドの特徴については、こちらの記事をご覧ください...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート