比onethink方便移植,升级和二次开发, 详情请看http://git.oschina.net/einsqing/thinphp-addons 1. [代码] [PHP]代码 ?php// +----------------------------------------------------------------------// | OneThink [ WE CAN DO IT
详情请看http://git.oschina.net/einsqing/thinphp-addons
1. [代码][PHP]代码
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.inuoer.com All rights reserved.
// +----------------------------------------------------------------------
// | Author: better <einsqing@gmail.com>
// +----------------------------------------------------------------------
namespace Common\Controller;
use Think\Controller;
/**
* 插件类
* @author better <einsqing@gmail.com>
*/
abstract class Addon extends Controller
{
/**
* 视图实例对象
* @var view
* @access protected
*/
protected $view = null;
public $addon_path = '';
public $config_file = '';
public $view_path = '';
public function __construct()
{
$this->view = \Think\Think::instance('Think\View');
$this->addon_path = ADDON_PATH . '/' . $this->getName() . '/';
//重置视图配置
C('DEFAULT_THEME', '');
C('VIEW_PATH', '');
if (is_file($this->addon_path . 'Conf/config.php')) {
$this->config_file = $this->addon_path . 'Conf/config.php';
$config = require $this->config_file;
C($config);
}
$this->view_path = __ROOT__ . '/' . ADDON_PATH . '/' . $this->getName() . '/';
C("TMPL_PARSE_STRING", array(
'__IMG__' => $this->view_path . 'View' . C("DEFAULT_THEME") . '/Public/image',
'__CSS__' => $this->view_path . 'View' . C("DEFAULT_THEME") . '/Public/css',
'__JS__' => $this->view_path . 'View' . C("DEFAULT_THEME") . '/Public/js',
'__ADDON_PUBLIC__' => $this->view_path . 'View' . C("DEFAULT_THEME") . '/Public',
));
}
/**
* 模板主题设置
* @access protected
* @param string $theme 模版主题
* @return Action
*/
final protected function theme($theme)
{
$this->view->theme($theme);
return $this;
}
//显示方法
final protected function display($template = '')
{
if ($template == '')
$template = CONTROLLER_NAME;
$action = ACTION_NAME;
echo($this->fetch($template, $action));
}
/**
* 模板变量赋值
* @access protected
* @param mixed $name 要显示的模板变量
* @param mixed $value 变量的值
* @return Action
*/
final protected function assign($name, $value = '')
{
$this->view->assign($name, $value);
return $this;
}
//用于显示模板的方法
final protected function fetch($templateFile = CONTROLLER_NAME, $action = ACTION_NAME)
{
if (!is_file($templateFile)) {
if (C('VIEW_PATH')) {
$templateFile = C('VIEW_PATH') . C('DEFAULT_THEME') . '/' . $templateFile . '/' . $action . C('TMPL_TEMPLATE_SUFFIX');
} else {
$templateFile = $this->addon_path . 'View/' . C('DEFAULT_THEME') . '/' . $templateFile . '/' . $action . C('TMPL_TEMPLATE_SUFFIX');
}
if (!is_file($templateFile)) {
throw new \Exception("模板不存在:$templateFile");
}
}
return $this->view->fetch($templateFile);
}
final public function getName()
{
$class = get_class($this);
$str = explode('\\', $class);
return $str[1];
}
//必须实现安装
abstract public function install();
//必须卸载插件方法
abstract public function uninstall();
}
