コード例 #1
0
ファイル: csr.php プロジェクト: suttang/c-shamoo-router
 /**
  * モジュールインポートメソッド
  * 
  * MODULES_DIR に配置してあるモジュールをインポートする。
  * 指定の方法は、
  * MODULES_DIR/a/b/c/Foo.php
  * というモジュールに対して
  * a.b.c.Foo
  * もしくは
  * a.b.c.*
  * という方法で指定する。
  * 最後を * で指定した場合、そのディレクトリに含まれる全てのファイルを取得する。
  * サブディレクトリは検索しない
  * 
  * ToDo
  * モジュールが読み込めなかったとき、原因がわかりにくい
  * 
  * Usage
  * <code>
  * CSR::import('package.module.name');
  * CSR::import('package.module.*');
  * </code>
  * 
  * @param string package name
  * @return void
  */
 function import($package)
 {
     $loadedModules =& CSR::get('modules');
     if (isset($loadedModules[$package])) {
         return;
     }
     //$loadedModules[$package];
     $path = str_replace('.', '/', $package);
     if (basename($path) === '*') {
         $path = substr($path, 0, -1);
         if (is_dir(MODULES_DIR . $path) && ($dir = opendir(MODULES_DIR . $path))) {
             while (($entry = readdir($dir)) !== false) {
                 if (!is_dir(MODULES_DIR . $path . $entry) && $entry[0] !== '.') {
                     $package = str_replace('/', '.', $path . str_replace('.php', '', $entry));
                     if (!CSR::_importModule($package)) {
                         trigger_error(sprintf('Failed import %s.', $package), E_USER_WARNING);
                     }
                 }
             }
             closedir($dir);
         }
     } else {
         if (!CSR::_importModule($package)) {
             trigger_error(sprintf('Failed import %s.', $package), E_USER_WARNING);
         }
     }
 }