php の method_exists() と is_callable() の違い
この記事は、PHP の method_exists() と is_callable() の違いの詳細な分析と紹介です。必要な方は、PHP 関数の method_exists() と is_callable() の違いを参照してください。 PHP のオブジェクト指向設計プロセスでは、メソッドを呼び出すときに、メソッドが特定のクラスに属しているかどうかを判断する必要があることがよくあります。それに比べて、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() の違いは、php5 では、メソッドの存在は、そのメソッドを呼び出すことができることを意味しないことです。プライベート、プロテクト、パブリック タイプのメソッドの場合、method_exits() は true を返しますが、is_callable() はメソッドが存在し、アクセスできるかどうかを確認し、プライベート、プロテクト タイプの場合は false を返します。