Esempio n. 1
0
 /**
  * @param string $class
  * @return MPF_Component
  */
 public function load_component($parent, $class, $is_page = false)
 {
     $flag = true;
     if ($is_page) {
         $this->debug("load page: {$class}");
         $flag = mpf_require_page($class);
         $class = $class . "Page";
     } else {
         $this->debug("load component: {$class}");
         $flag = mpf_require_component($class);
         $class = $class . "Component";
     }
     if (!$flag && substr($class, 0, 3) == "HK_") {
         $class = substr($class, 3);
     }
     $this->html_id++;
     return new $class($parent, self::HTML_ID_PREFIX . $this->html_id);
 }
Esempio n. 2
0
 /**
  * 实际结果就是更新APF->boundable_resources变量,将用到的资源文件(整合)路径信息
  * 记录到boundable_resources中。
  * @todo 非递归实现
  * @param string $class 文件名<->资源文件名与页面类名是一一对应的
  * @param string $ext 文件扩展名
  * @param boolen $is_page 是否为页面类
  */
 protected function fetch_boundable_resources($class, $ext, $is_page = false)
 {
     if ($is_page) {
         if ($pos = strpos($class, "(")) {
             $class = substr($class, 0, $pos);
         }
         mpf_require_page($class);
         $path = "page/";
         $class = $class . "Page";
     } else {
         // 载入组件类
         mpf_require_component($class);
         $path = "component/";
         $class = $class . "Component";
     }
     if (!class_exists($class)) {
         return false;
     }
     // 获取组件(页面)使用的组件列表
     eval("\$list = {$class}" . "::use_component();");
     foreach ($list as $item) {
         // 载入所有子组件用到的资源文件
         $this->fetch_boundable_resources($item, $ext);
     }
     // 获取用到的资源文件相对路径
     if ($ext == 'js') {
         eval("\$list = {$class}::use_boundable_javascripts();");
     } elseif ($ext == 'css') {
         eval("\$list = {$class}::use_boundable_styles();");
     } else {
         trigger_error("Unknown extention \"{$ext}\"", E_USER_WARNING);
         $list = array();
     }
     $mpf = MPF::get_instance();
     foreach ($list as $item) {
         // 获取资源文件的绝对路径
         $mpf->prcess_resource_url($path, $item, $this->boundable_resources);
     }
     return true;
 }