コード例 #1
0
 /**
  * Loggerを返却
  *
  * @param   string  $name   Loggerのクラス名
  * @return  Object  Loggerのインスタンス
  * @access  public
  * @since   3.0.0
  */
 function &getLog($name = DEFAULT_LOGGER)
 {
     //
     // Loggerのクラス名が不正だったらデフォルトのLoggerを切り替え
     //
     if (!preg_match("/^[0-9a-zA-Z_]+\$/", $name)) {
         $name = DEFAULT_LOGGER;
     }
     //
     // 既にセットされているLoggerだったらそれをそのまま返却
     //
     $logFactory =& LogFactory::getInstance();
     if (isset($logFactory->_list[$name]) && is_object($logFactory->_list[$name])) {
         return $logFactory->_list[$name];
     }
     //
     // ファイルが存在していなければエラーを表示
     //
     $className = "Logger_" . ucfirst($name);
     $filename = LOGGER_DIR . "/{$className}.class.php";
     if (!@(include_once $filename) or !class_exists($className)) {
         $error = "Loggerのファイル名が不正です({$filename})";
         trigger_error($error, E_USER_ERROR);
         exit;
     }
     //
     // オブジェクトの生成に失敗していたらエラー
     //
     $logger =& new $className();
     if (!is_object($logger)) {
         return false;
     }
     $logFactory->_list[$name] =& $logger;
     return $logger;
 }