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

PHPにおける静的クラスと静的変数の使用例の比較分析

伊谢尔伦
伊谢尔伦オリジナル
2017-06-30 11:07:021382ブラウズ

この記事では主に、php での静的クラスと静的変数の使用法の違いを紹介します。php での静的クラスと静的変数の定義、機能、および使用スキルを例とともに詳しく分析します。必要な方はこの記事を参照してください。

この例では、PHP での静的クラスと静的変数の使用法の違いを分析します。皆さんの参考に共有してください。具体的な分析は次のとおりです。

static は、静的オブジェクトまたは静的変数を定義します。 static で定義された変数またはクラス メソッドの特性については、この記事の

1 を参照してください。 object$ object = new Class() を使用して、$object->attribute/function を呼び出します (変数/メソッドがアクセス可能である場合)

2 クラスのメソッド/変数を直接呼び出します。 : class::attribute/ 関数。静的か非静的かに関係なく、前提条件があります。

A. 変数の場合は、変数にアクセスできる必要があります。

B.メソッドがアクセス可能であることに加えて、満たす必要もあります。

① 静的メソッドの場合、特別な条件はありません

② 非静的メソッドの場合、$ を使用せずにメソッドを変更する必要があります。これは、つまり、静的でない変数/メソッドは呼び出されません。もちろん、静的変数/メソッドを呼び出すことに問題はありません。

次に、$object->… の使用とクラスの使用の違いを見てみましょう。 ::…:

1. $object->… を使用するには、

コンストラクターを実行してオブジェクトを作成する必要があります。

2. class::... を使用して、コンストラクターを実行せずに静的メソッド/変数を呼び出します。オブジェクトを作成します。

3. オブジェクトを作成するコンストラクターを実行せずに、class::... を使用して非静的メソッド/変数を呼び出します。

次に、2 と 3 は同じであるため、奇妙なことに Out です。静的メソッド/変数の存在のポイント?

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

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

<?php 
Class Person{ 
    // 定义静态成员属性 
    public static $country = "中国"; 
    // 定义静态
成员方法
 
    public static function myCountry() { 
        // 内部访问静态成员属性 
        echo "我是".self::$country."人<br />"; 
    } 
} 
class Student extends Person { 
    function study() { 
        echo "我是". parent::$country."人<br />"; 
    } 
} 
// 输出成员属性值 
echo Person::$country."<br />";  // 输出:中国 
$p1 = new Person(); 
//echo $p1->country;   // 错误写法 
// 访问静态成员方法 
Person::myCountry();   // 输出:我是中国人 
// 静态方法也可通过对象访问: 
$p1->myCountry(); 
 
// 子类中输出成员属性值 
echo Student::$country."<br />"; // 输出:中国 
$t1 = new Student(); 
$t1->study();    // 输出:我是中国人 
?>

この例を実行すると、出力は次のようになります:
中国
私は中国人です
私は中国人です
中国
私は中国人です

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

slef:: $country
slef:: myCountry()

クラス内の静的メンバー属性またはメソッドにアクセスするにはサブクラス、parent:: を使用します ($parent ではないことに注意)、コードは次のとおりです:

parent:: $country
parent:: myCountry()

静的メンバーへの外部アクセス

プロパティとメソッド はクラス名/サブクラス名::、コードは次のとおりです:

Person::$country
Person::myCountry()
Student::$country

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

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

<?PHP 
   function foo(){ 
   static $int = 0;// correct 
   static $int = 1+2;   // wrong (as it is an expression) 
   static $int = sqrt(121); // wrong (as it is an expression too) 
   $int++; 
   echo $int; 
   } 
?>

例、静的変数の使用例、コードは次のとおりです:

<?PHP 
   function Test() 
   { 
   static $w3sky = 0; 
   echo $w3sky; 
   $w3sky++; 
   } 
?>

() 関数が呼び出されると、$w3sky の値が出力され、1 ずつインクリメントされます。

静的変数でも処理が可能です

再帰関数のメソッド、再帰関数は自分自身を呼び出す関数です。再帰関数は無限に再帰する可能性があるため、再帰を終了するための十分なメソッドがあることを確認する必要があります。この単純な関数を再帰的に 10 まで数えてみましょう。いつ停止するかを決定するには、静的変数 $count を使用します。 、静的変数、再帰関数のコードは次のとおりです:

<?PHP 
   function Test() 
   { 
   static $count = 0; 
    
   $count++; 
   echo $count; 
   if ($count < 10) { 
   Test(); 
   } 
   $count--; 
   } 
?>

注: 静的変数は上記の例に従って宣言できます。

の結果が宣言で使用されている場合、その代入により解析エラーが発生します。 .

以上がPHPにおける静的クラスと静的変数の使用例の比較分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。