2008-09-23 76 views
6

如何檢查靜態類是否已被聲明? 前 鑑於類Php檢查是否聲明瞭靜態類

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

在後面的代碼如何檢查:

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

,所以我不明白: 致命錯誤:類「鮑勃」在file.php上未找到線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(); 
} 

或者,你可以結合這兩種方法

if (method_exists(bob, 'yippie')) 
{ 
    $method = new ReflectionMethod('bob::yippie'); 
    if ($method->isStatic()) 
    { 
     // verified that bob::yippie is defined AND static, proceed 
    } 
}