2012-08-30 76 views
4

我不能做到這一點,但不知道什麼工作進行實例化:如何檢查是否一個對象可以使用PHP

is_object(new Memcache){ 
    //assign memcache object  
    $memcache = new Memcache; 
    $memcache->connect('localhost', 11211); 
    $memcache->get('myVar'); 
} 
else{ 
    //do database query to generate myVar variable 
} 

回答

2

class_exists

if (class_exists('Memcache')){ 
    //assign memcache object  
    $memcache = new Memcache; 
    $memcache->connect('localhost', 11211); 
    $memcache->get('myVar'); 
} 
else{ 
    //do database query to generate myVar variable 
} 
0

可以使用class_exists功能,看是否有階級存在與否。

查看更多手冊:class_exists

6

您可以使用class_exists()檢查一個類存在,但它不會返回,如果你能實例化類!

你不能的原因之一,可能是它是一個抽象類。要檢查你是否應該在之後做這樣的,你需要檢查class_exists()

這可能是不可能的(有一個抽象類,不檢查的話)對上面的例子,但在其他情況下可能給你頭疼:)

//first check if exists, 
if (class_exists('Memcache')){ 
    //there is a class. but can we instantiate it? 
    $class = new ReflectionClass('Memcache') 
    if(! $class->isAbstract()){ 
     //dingdingding, we have a winner! 
    } 
} 
+1

即使其他的答案提供_sufficient_的解決方案,這應該成爲進一步邁出關鍵一步的公認答案 – Ejaz

相關問題