解析php関数method_exists()とis_callable()の違い

1091 ワード

php関数method_exists()とis_callable()の違いはどこですか?phpフェーズオブジェクトの設計では、メソッドがクラスに属しているかどうかを呼び出すときに判断する必要があります.よく使われるメソッドはmethod_です.exists()とis_callable()に比べてis_callable()関数は、文字列変数形式のメソッド名を最初のパラメータとして受け入れ、クラスメソッドが存在し、呼び出せる場合はtrueを返します.クラス内のメソッドが呼び出されるかどうかを検出するには、クラスのメソッド名ではなく関数に配列をパラメータとして渡すことができます.配列には、オブジェクトまたはクラス名が含まれている必要があります.これを最初の要素とし、チェックするメソッド名を2番目の要素とします.このメソッドがクラスに存在する場合、関数はtrueを返します.
コードの例:
 
  
if ( is_callable( array( $obj, $method ) ) )
{
/* */
}

is_callable()は、別のパラメータを追加できます.ブール値です.このパラメータをtrueに設定すると、関数は、指定されたメソッドまたは関数名の構文が正しいかどうかを確認するだけで、実際に存在するかどうかを確認しません.method_exists()関数のパラメータは、オブジェクト(またはクラス名)とメソッド名であり、指定されたメソッドがオブジェクトのクラスに存在する場合はtrueを返します.
コードの例:
 
  
if ( method_exists( $obj, $method ) )
{
/* */
}

php関数method_exists()とis_callable()の違いはphp 5において、1つの方法が存在することは、呼び出すことができることを意味しないことである.private、protected、publicタイプのメソッドの場合、method_exits()はtrueを返しますが、is_callable()はアクセス可能かどうかをチェックし、private、protectedタイプの場合はfalseを返します.