9

静的クラスが宣言されているかどうかを確認するにはどうすればよいですか? ex与えられたクラス

class bob {
    function yippie() {
        echo "skippie";
    }
}

後でコードで確認するにはどうすればよいですか:

if(is_a_valid_static_object(bob)) {
    bob::yippie();
}

だから私は取得しません: 致命的なエラー: 3 行目の file.php にクラス 'bob' が見つかりません

4

2 に答える 2

16

クラスをインスタンス化しなくても、特定のメソッドの存在を確認することもできます

echo method_exists( bob, 'yippie' ) ? 'yes' : 'no';

さらに一歩進んで、「yippie」が実際に静的であることを確認したい場合は、Reflection APIを使用します(PHP5 のみ) 。

try {
    $method = new ReflectionMethod( 'bob::yippie' );
    if ( $method->isStatic() )
    {
        // verified that bob::yippie is defined AND static, proceed
    }
}
catch ( ReflectionException $e )
{
    //  method does not exist
    echo $e->getMessage();
}

または、2 つのアプローチを組み合わせることができます

if ( method_exists( bob, 'yippie' ) )
{
    $method = new ReflectionMethod( 'bob::yippie' );
    if ( $method->isStatic() )
    {
        // verified that bob::yippie is defined AND static, proceed
    }
}
于 2008-09-23T20:56:02.117 に答える
8

bool class_exists( string $class_name [, bool $autoload ])

この関数は、指定されたクラスが定義されているかどうかをチェックします。

于 2008-09-23T20:42:44.740 に答える