/** * シングルトンの SC_Query インスタンスを取得する. * * @param string $dsn データソース名 * @param boolean $force_run エラーが発生しても処理を続行する場合 true * @param boolean $new 新規に接続を行うかどうか * @return SC_Query シングルトンの SC_Query インスタンス */ static function getSingletonInstance($dsn = '', $force_run = false, $new = false) { $objThis = SC_Query_Ex::getPoolInstance($dsn); if (is_null($objThis)) { $objThis = SC_Query_Ex::setPoolInstance(new SC_Query_Ex($dsn, $force_run, $new), $dsn); } /* * 歴史的な事情で、このメソッドの呼び出し元は参照で受け取る確率がある。 * 退避しているインスタンスをそのまま返すと、退避している SC_Query の * プロパティを直接書き換えることになる。これを回避するため、クローンを返す。 * 厳密な意味でのシングルトンではないが、パフォーマンス的に大差は無い。 */ return clone $objThis; }
/** * SC_Helper_Plugin オブジェクトを返す(Singletonパターン) * * @return object SC_Helper_Pluginオブジェクト */ static function getSingletonInstance($plugin_activate_flg = true) { if (!isset($GLOBALS['_SC_Helper_Plugin_instance'])) { // プラグインのローダーがDB接続を必要とするため、 // SC_Queryインスタンス生成後のみオブジェクトを生成する。 require_once CLASS_EX_REALDIR . 'SC_Query_Ex.php'; if (is_null(SC_Query_Ex::getPoolInstance())) { return false; } $GLOBALS['_SC_Helper_Plugin_instance'] = new SC_Helper_Plugin_Ex(); $GLOBALS['_SC_Helper_Plugin_instance']->load($plugin_activate_flg); } return $GLOBALS['_SC_Helper_Plugin_instance']; }