PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPの静的プロパティとメソッド


はじめに

PHPクラスでは、staticキーワードで宣言されたプロパティとメソッドは、->演算子を使用してそのオブジェクトからアクセスすることはできません。実際、オブジェクトはクラスのインスタンスにアクセスする必要はありません。クラス内の静的アイテムのデフォルトの可視性は公開されています

静的プロパティ

クラスの外部から静的プロパティにアクセスするには、クラスの名前とともにスコープ解決演算子(::)を使用する必要があります。クラスの名前に評価される文字列変数は、静的プロパティにも提供できます

<?php
class testclass{
   static $name="test";
}
echo testclass::$name;
$var="testclass";
echo $var::$name;
?>

同じクラスのメソッド内で静的プロパティを使用するには、 selfを使用します インスタンスプロパティへのアクセスに使用される->演算子の代わりにキーワード。

<?php
class testclass{
   static $name="test";
   public function test(){
      echo self::$name;
   }
}
$obj=new testclass();
$obj->test();
?>

親クラスで宣言された静的プロパティは、を使用して、子クラスメソッド内で参照できます。 キーワードとスコープ解決演算子

<?php
class testclass{
   static $name="test";
   public function test(){
      echo self::$name;
   }
}
class myclass extends testclass{
   public function mytest(){
      echo parent::$name;
   }
}
$obj=new myclass();
$obj->mytest();
?>

静的メソッド

メソッドが静的として宣言されている場合、疑似変数 $ this 利用できません。したがって、クラスのインスタンス属性にアクセスすることはできません。静的メソッドは、スコープ解決演算子とともにクラスの名前で呼び出されます

次の例では、クラスに静的プロパティ$ countがあり、コンストラクターが実行されるたびに(つまり、オブジェクトごとに)増加します。クラス内には、静的プロパティの値を取得する静的関数があります

<?php
class testclass{
   static $count=0;
   function __construct(){
      self::$count++;
   }
   static function showcount(){
      echo "count = " . self::$count;
   }
}
$a=new testclass();
$b=new testclass();
$c=new testclass();
testclass::showcount();
?>

出力

これにより、次の出力が生成されます-

count = 3

  1. JavaScriptで静的メソッドをクラスに割り当てる方法は?

    JavaScriptで静的メソッドをクラスに割り当てるには、メソッドの前にキーワードstaticを付けるだけです。その後、クラスをインスタンス化せずに静的メソッドを呼び出すことができます。 以下は、JavaScriptのクラスに静的メソッドを割り当てるためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="wid

  2. 抽象クラスとインターフェースの違い

    抽象クラスは、デフォルトの動作を実装するインスタンスメソッドを持つことができます。インターフェイスは定数とインスタンスメソッドのみを宣言できますが、デフォルトの動作を実装することはできず、すべてのメソッドは暗黙的に抽象化されています。インターフェースにはすべてのパブリックメンバーがあり、実装はありません。