亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2863 | 回復(fù): 0
打印 上一主題 下一主題

比onethink更好用的插件機(jī)制 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-08-12 13:37 |只看該作者 |倒序?yàn)g覽
自主開發(fā)的thinkphp插件機(jī)制,比onethink方便移植,升級(jí)和二次開發(fā)。

代碼
  1. 核心類
  2. <?php
  3. // +----------------------------------------------------------------------
  4. // | Thinkphp [ WE CAN DO IT JUST THINK IT ]
  5. // +----------------------------------------------------------------------
  6. // | Copyright (c) 2015 http://www.inuoer.com All rights reserved.
  7. // +----------------------------------------------------------------------
  8. // | Author: better <einsqing@gmail.com>
  9. // +----------------------------------------------------------------------

  10. namespace Common\Controller;
  11. use Think\Controller;

  12. /**
  13. * 插件類
  14. * @author better <einsqing@gmail.com>
  15. */
  16. abstract class Addon extends Controller
  17. {
  18.     /**
  19.      * 視圖實(shí)例對象
  20.      * @var view
  21.      * @access protected
  22.      */
  23.     protected $view = null;

  24.     public $addon_path = '';
  25.     public $config_file = '';
  26.     public $view_path = '';

  27.     public function __construct()
  28.     {
  29.         $this->view = \Think\Think::instance('Think\View');
  30.         $this->addon_path = ADDON_PATH . '/' . $this->getName() . '/';
  31.         //重置視圖配置
  32.         C('DEFAULT_THEME', '');
  33.         C('VIEW_PATH', '');
  34.         if (is_file($this->addon_path . 'Conf/config.php')) {
  35.             $this->config_file = $this->addon_path . 'Conf/config.php';
  36.             $config = require $this->config_file;
  37.             C($config);
  38.         }

  39.         $this->view_path = __ROOT__ . '/' . ADDON_PATH . '/' . $this->getName() . '/';
  40.         C("TMPL_PARSE_STRING", array(
  41.             '__IMG__' => $this->view_path . 'View' . C("DEFAULT_THEME") . '/Public/image',
  42.             '__CSS__' => $this->view_path . 'View' . C("DEFAULT_THEME") . '/Public/css',
  43.             '__JS__' => $this->view_path . 'View' . C("DEFAULT_THEME") . '/Public/js',
  44.             '__ADDON_PUBLIC__' => $this->view_path . 'View' . C("DEFAULT_THEME") . '/Public',
  45.         ));
  46.     }

  47.     /**
  48.      * 模板主題設(shè)置
  49.      * @access protected
  50.      * @param string $theme 模版主題
  51.      * @return Action
  52.      */
  53.     final protected function theme($theme)
  54.     {
  55.         $this->view->theme($theme);
  56.         return $this;
  57.     }

  58.     //顯示方法
  59.     final protected function display($template = '')
  60.     {
  61.         if ($template == '')
  62.             $template = CONTROLLER_NAME;
  63.         $action = ACTION_NAME;

  64.         echo($this->fetch($template, $action));
  65.     }

  66.     /**
  67.      * 模板變量賦值
  68.      * @access protected
  69.      * @param mixed $name 要顯示的模板變量
  70.      * @param mixed $value 變量的值
  71.      * @return Action
  72.      */
  73.     final protected function assign($name, $value = '')
  74.     {
  75.         $this->view->assign($name, $value);
  76.         return $this;
  77.     }


  78.     //用于顯示模板的方法
  79.     final protected function fetch($templateFile = CONTROLLER_NAME, $action = ACTION_NAME)
  80.     {
  81.         if (!is_file($templateFile)) {
  82.             if (C('VIEW_PATH')) {
  83.                 $templateFile = C('VIEW_PATH') . C('DEFAULT_THEME') . '/' . $templateFile . '/' . $action . C('TMPL_TEMPLATE_SUFFIX');
  84.             } else {
  85.                 $templateFile = $this->addon_path . 'View/' . C('DEFAULT_THEME') . '/' . $templateFile . '/' . $action . C('TMPL_TEMPLATE_SUFFIX');
  86.             }

  87.             if (!is_file($templateFile)) {
  88.                 throw new \Exception("模板不存在:$templateFile");
  89.             }
  90.         }
  91.         return $this->view->fetch($templateFile);
  92.     }

  93.     final public function getName()
  94.     {
  95.         $class = get_class($this);

  96.         $str = explode('\\', $class);
  97.         return $str[1];
  98.     }


  99.     //必須實(shí)現(xiàn)安裝
  100.     abstract public function install();

  101.     //必須卸載插件方法
  102.     abstract public function uninstall();

  103. }

  104. 核心方法

  105. /**
  106. * 執(zhí)行SQL文件
  107. */
  108. function execute_sql_file($sql_path)
  109. {
  110.     // 讀取SQL文件
  111.     $sql = wp_file_get_contents($sql_path);
  112.     $sql = str_replace("\r", "\n", $sql);
  113.     $sql = explode(";\n", $sql);

  114.     // 替換表前綴
  115.     $orginal = 'wp_';
  116.     $prefix = C('DB_PREFIX');
  117.     $sql = str_replace("{$orginal}", "{$prefix}", $sql);

  118.     // 開始安裝
  119.     foreach ($sql as $value) {
  120.         $value = trim($value);
  121.         if (empty ($value))
  122.             continue;

  123.         $res = M()->execute($value);
  124.         // dump($res);
  125.         // dump(M()->getLastSql());
  126.     }
  127. }

  128. // 防超時(shí)的file_get_contents改造函數(shù)
  129. function wp_file_get_contents($url)
  130. {
  131.     $context = stream_context_create(array(
  132.         'http' => array(
  133.             'timeout' => 30
  134.         )
  135.     )); // 超時(shí)時(shí)間,單位為秒

  136.     return file_get_contents($url, 0, $context);
  137. }

  138. /**
  139. * 插件顯示內(nèi)容里生成訪問插件的url
  140. * @param string $url url
  141. * @param array $param 參數(shù)
  142. * @author better
  143. * @useage u_addons('apply://App/Index/addorder',array('id'=>'1'))
  144. */
  145. function u_addons($url, $param = array()){
  146.     $url = explode('://', $url);
  147.     $addon = $url[0];
  148.     $url = $url[1];

  149.     $url = U($url, $param, false);
  150.     return $url . '/addon/' . $addon;
  151. }
復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP