静的クラスが宣言されている場合のPHPチェック


6

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

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

ので、私は取得しない: 致命的なエラー:クラス「ボブ」file.php上で見つからなかっ 元 は

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

以降のコードでは、私がチェックしますかどのようにクラスを考えますライン3

13

またしても、クラスをインスタンス化せず、具体的な方法が存在するかどうかを確認することができます

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

あなたは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 
    } 
} 
を組み合わせることができ

8

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

This function checks whether or not the given class has been defined.