示例#1
0
 /**
  * 获取单例句柄
  *
  * @access public
  * @return Typecho_Widget_Helper_Empty
  */
 public static function getInstance()
 {
     if (null === self::$_instance) {
         self::$_instance = new Typecho_Widget_Helper_Empty();
     }
     return self::$_instance;
 }
示例#2
0
文件: Widget.php 项目: dccecc/typecho
 /**
  * 工厂方法,将类静态化放置到列表中
  *
  * @access public
  * @param string $alias 组件别名
  * @param mixed $params 传递的参数
  * @param mixed $request 前端参数
  * @param boolean $enableResponse 是否允许http回执
  * @return object
  * @throws Typecho_Exception
  */
 public static function widget($alias, $params = NULL, $request = NULL, $enableResponse = true)
 {
     $parts = explode('@', $alias);
     $className = $parts[0];
     $alias = empty($parts[1]) ? $className : $parts[1];
     if (isset(self::$_widgetAlias[$className])) {
         $className = self::$_widgetAlias[$className];
     }
     if (!isset(self::$_widgetPool[$alias])) {
         /** 如果类不存在 */
         if (!class_exists($className)) {
             throw new Typecho_Widget_Exception($className);
         }
         /** 初始化request */
         if (!empty($request)) {
             $requestObject = new Typecho_Request();
             $requestObject->setParams($request);
         } else {
             $requestObject = Typecho_Request::getInstance();
         }
         /** 初始化response */
         $responseObject = $enableResponse ? Typecho_Response::getInstance() : Typecho_Widget_Helper_Empty::getInstance();
         /** 初始化组件 */
         $widget = new $className($requestObject, $responseObject, $params);
         $widget->execute();
         self::$_widgetPool[$alias] = $widget;
     }
     return self::$_widgetPool[$alias];
 }
示例#3
0
 /**
  * 工厂方法,将类静态化放置到列表中
  *
  * @access public
  * @param string $alias 组件别名
  * @param mixed $params 传递的参数
  * @param mixed $request 前端参数
  * @param boolean $enableResponse 是否允许http回执
  * @return object
  * @throws Typecho_Exception
  */
 public static function widget($alias, $params = NULL, $request = NULL, $enableResponse = true)
 {
     list($className) = explode('@', $alias);
     if (!isset(self::$_widgetPool[$alias])) {
         $fileName = str_replace('_', '/', $className) . '.php';
         require_once $fileName;
         /** 如果类不存在 */
         if (!class_exists($className)) {
             /** Typecho_Exception */
             require_once 'Typecho/Widget/Exception.php';
             throw new Typecho_Widget_Exception($className);
         }
         /** 初始化request */
         if (!empty($request)) {
             $requestObject = new Typecho_Request();
             $requestObject->setParams($request);
         } else {
             $requestObject = Typecho_Request::getInstance();
         }
         /** 初始化response */
         $responseObject = $enableResponse ? Typecho_Response::getInstance() : Typecho_Widget_Helper_Empty::getInstance();
         /** 初始化组件 */
         $widget = new $className($requestObject, $responseObject, $params);
         $widget->execute();
         self::$_widgetPool[$alias] = $widget;
     }
     return self::$_widgetPool[$alias];
 }