4

私はこれを行うことはできませんが、何がうまくいくのか疑問に思っています:

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
}
4

4 に答える 4

12

クラスが存在するかどうかを確認するために使用class_exists()できますが、そのクラスをインスタンス化できる場合は返されません。

できない理由の1つは、それが抽象クラスであるためかもしれません。これを確認するには、を確認した後で次のようにする必要があります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!
    }
}
于 2014-02-12T15:24:18.087 に答える
4

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
}
于 2012-08-30T19:52:32.470 に答える
0

チェックアウトclass_exists()

http://php.net/manual/en/function.class-exists.php

于 2012-08-30T19:52:49.290 に答える
0

この関数を使用してclass_exists、クラスが存在するかどうかを確認できます。

マニュアルで詳細を参照してください:class_exists

于 2012-08-30T19:53:21.320 に答える