PHP クラス、インターフェイス、オーバーロード関連の知識サンプル コードの概要

伊谢尔伦
リリース: 2023-03-12 06:18:01
オリジナル
1005 人が閲覧しました

この記事では主にPHPクラスに関する知識を紹介し、PHPクラス関連のfinalクラスfinalメソッド抽象クラス、抽象メソッド、インターフェース、オーバーロード、マジックメソッドの関連概念や、操作スキルを必要とする友人はそれを参照できます

この記事では、PHP 関連の知識ポイントを例とともにまとめています。参考のために皆さんと共有してください。詳細は次のとおりです:

finalクラスとfinalメソッド

親クラスのメソッドがfinalとして宣言されている場合、サブクラスはそのメソッドをオーバーライドできません。クラスがfinalと宣言されている場合、そのクラスを継承することはできません。

final class a{}
class a{
  final public function A(){}
}
ログイン後にコピー

抽象クラスと抽象メソッド

abstract class a {
  public abstract function func();
}
class A extends a{
  public function func(){}
}
ログイン後にコピー

① クラスはabstractを使用して抽象クラスとして宣言できます; 抽象クラスはインスタンス化できず、他のクラスの親クラスとしてのみ使用されるクラスです。

abstract class name{}
ログイン後にコピー

② メソッドは、abstract を使用して抽象メソッドとして宣言できます。抽象メソッドはメソッド ヘッダーを宣言するだけでよく、中括弧で囲んだメソッド本体は必要ありません。

abstract public function name($val);
ログイン後にコピー

③ クラス内に抽象メソッドがある場合、そのクラスは抽象クラスとして宣言する必要があります。

④ サブクラスが抽象クラスを継承する場合、サブクラスも抽象クラスであり続けない限り、サブクラスは親クラスのすべての抽象メソッドを実装できません。

⑤ サブクラスが抽象親クラスのメソッドを実装する場合、アクセス制御の文字範囲を減らすことはできず、メソッドのパラメータも一貫している(書き換える)必要があります。

インターフェース

インターフェースは、抽象クラスのより高いレベルの抽象化とみなすことができ、抽象クラスの特殊なケースであると言えます

interface a{
  function func();
}
class A implements a {
  function func(){}
}
ログイン後にコピー

クラス: 属性、クラス定数、メソッド

抽象クラス: 属性、クラス定数、抽象メソッド

インターフェイス: インターフェイス定数、抽象メソッド

① 抽象クラスと比較して、インターフェイスは「多重継承」を実装できます

class A implements a,b,c{}
ログイン後にコピー

② インターフェイスは1つのインターフェイスのみを継承できます

interface a extends b{}
ログイン後にコピー

③ここで、メソッドは、抽象メソッドを抽象で変更する必要はありません。つまり、下位レベルのクラスは、インターフェイス メソッド (実装) を実装するか、抽象メソッド

オーバーロード テクノロジ

1としても宣言されます。 : 存在しない属性を使用する場合、データを処理するためにクラス内の定義済みメソッドが呼び出されます

属性が使用されないアプリケーション シナリオの場合、次の処理が行われます

① 値: 自動的に呼び出します。クラス内のget()
② 代入:クラスset()を自動的に呼び出す
③ 存在するかどうかの判定:クラス内のisset()を自動的に呼び出す
④ 破壊:クラス内のunset()を自動的に呼び出す

前提これらのメソッドは事前定義されているということです。そうでない場合は、エラーが報告されます

<?php
class bee{
  public $ol = array();
  public function get($key){
    if(isset($this->ol[$key])){
      return $this->ol[$key];
    }
    return $key.&#39; not exists&#39;;
  }
  public function set($key,$val){
    $this->ol[$key] = $val;
  }
  public function isset($key){
    if(isset($this->ol[$key])){
      return true;
    }
    return false;
  }
  public function unset($key){
    unset($this->ol[$key]);
  }
}
$obj = new bee();
echo $obj->one;
echo &#39;<br>&#39;;
$obj->one = 1;
echo $obj->one;
echo &#39;<br>&#39;;
var_dump(isset($obj->one));
ログイン後にコピー

実行結果は次のとおりです:

one not exists
1
boolean true
ログイン後にコピー

2. メソッドのオーバーロード: 存在しないメソッドが使用されている場合、事前定義されたメソッドが使用されます。動作を処理するためにクラスが呼び出されます。

メソッドが使用されないアプリケーションシナリオでは、次の処理を実行します

①オブジェクト内のアクセスできないメソッドを呼び出します: call()
②静的でアクセスできないメソッドを呼び出します。モード: callStatic()

<?php
class bee{
  public function call($name,$arr){
    echo &#39;<br>&#39;;
    echo &#39;function &#39;.$name.&#39; not exist&#39;;
  }
  static function callStatic($name,$arr){
    echo &#39;<br>&#39;;
    echo &#39;function &#39;.$name.&#39; not exist&#39;;
  }
  /*public function call($name,$arr){
    $num = count($arr);
    if($num<1){
      $name();
    }else{
      $name = $name.&#39;_one&#39;;
      $name($arr[0]);
    }
  }*/
}
$obj->func();
bee::staFunc();
/*$obj->func(1);
function func(){
  echo &#39;<br>&#39;;
  echo &#39;no.0&#39;;
}
function func_one($val){
  echo &#39;<br>&#39;;
  echo &#39;no.&#39;.$val;
}*/
ログイン後にコピー

実行結果は次のとおりです:

function func not exist
function staFunc not exist
ログイン後にコピー

注: 上記のメソッドはすべてマジックメソッドであり、すべてパラメータがあります

以上がPHP クラス、インターフェイス、オーバーロード関連の知識サンプル コードの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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