2

以下を使用すると、期待どおりに機能しません。有効なclassNameを使用すると、正常に実行されますが、存在しないクラスを使用すると、エラーをログに記録せずにクラッシュするだけです。これは予想される動作ですか?もしそうなら、オブジェクトが適切にインスタンス化されているかどうかをテストする方法についての提案はありますか?

$className = 'SomeClass';
try {
    $object = new $className;
    if (is_object($object)) {
        $logger->info(__METHOD__.' object created');
        return $object;
    } else {
        $logger->err(__METHOD__.' '.$className.' is not an object!');
    }
} catch (Exception $e) {
    $logger->err(__METHOD__.' error: '.print_r($e->getMessage()));
}
4

1 に答える 1

2

このために、class_exists関数を使用できます。

// Check that the class exists before trying to use it
if(class_exists($className)) {
    $object = new $className();
} else {
    // Do stuff for when class does not exist
}
于 2013-01-10T18:08:36.653 に答える