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

PHPのSTATICANDINSTANCEメソッドについて説明します。


PHPでは、静的メソッドよりもインスタンスメソッドの方が適しています。いずれにせよ、静的メソッドが役に立たないと言っているのではなく、明確でユニークな目的があります。ここでは、PHPの静的メソッドとインスタンスメソッドの比較について説明します。

ここで、インスタンスメソッドは常にクラスのオブジェクトに接続されているのに対し、静的メソッドは常にクラスに接続されていることに注意してください。

最初に静的メソッドについて話します。 PHPの静的メソッドは、他のオブジェクト指向プログラミング言語と同じです。 PHPで静的メソッドを使用する場合の重要なケース。静的メソッドは、特定の情報がクラス全体で安定している場合にのみ使用する必要があります。基本的に、静的メソッドは、そのクラスのオブジェクトの助けを借りずにそのメソッドにアクセスするときに使用されます。

<?php
   class Car{
      static function getColor(){
         return "blue";
      }
   }
   echo (Car::getColor());
?>

出力:

blue

説明:

たとえば、上記のプログラムで、あるプログラマーが車に関する情報を作成していて、Carクラスがあり、車の色を定義する関数getColor()があるとすると、getColor()関数が必要な各オブジェクトは次のようになります。クラスCarのすべてのオブジェクトに対して同様の色を返すため、この場合、getColor()メソッドを静的にすることができます。

インスタンスメソッドについて説明しましょう。インスタンスメソッドは、オブジェクトを作成せずにメソッドを呼び出す方法がない場合に使用されます。また、メソッドがクラスのプロパティと対話する必要があるたびに、インスタンスメソッドが必要でした。

上記のケースを例を挙げて展示しましょう:

<?php
   class Employee{
      private $empname;
      function setEmpname($empname) {
         $this->empname = $empname;
      }
      function getEmpname() {
         return $this -> empname;
      }
   }
   $obj = new Employee;
   $obj -> setEmpname("Alex");
   echo $obj -> getName();
?>

出力:

Alex

説明:

setEmpname()がemployeenameとgetEmpname()メソッドを読み取り、Employeeの名前を返すEmployeeクラスについて考えてみます。この場合、すべての従業員名は互いに異なるため、getEmpname()メソッドまたはsetEmploye()メソッドのいずれかを静的として宣言することはできません。これらのメソッドは、変数「$empname」と相互作用するたびに発生するためです。


  1. Javaの静的メソッドと非静的メソッドの違い

    Javaメソッドは、操作を実行するためにグループ化されたステートメントのコレクションです。たとえば、System.out.println()メソッドを呼び出すと、システムは実際にいくつかのステートメントを実行して、コンソールにメッセージを表示します。 静的メソッド 静的メソッドはクラスメソッドとも呼ばれ、クラスのオブジェクト全体で共通であり、このメソッドにはクラス名を使用してアクセスすることもできます。 非静的メソッド 静的でないクラスのメソッドは、非静的メソッドまたはインスタンスメソッドと呼ばれます。 以下は、静的メソッドと非静的メソッドの重要な違いです。 Sr。いいえ。 キー

  2. Javaでの静的バインディングと動的バインディング

    はい!コンパイラは、メソッドの実行に使用するオブジェクトを知っている場合、参照をオブジェクトに静的にバインドできます。たとえば、静的変数、プライベート変数、final変数は静的バインディングを使用しています。一方、オブジェクトの識別が実行時に行われる場合は、動的バインディングが使用されます。メソッドのオーバーライドは動的バインディングの場合です。 一方、メソッドのオーバーロードは静的バインディングの場合です。