118 lines
3.0 KiB
PHP
118 lines
3.0 KiB
PHP
<?php
|
||
/**
|
||
* @copyright (C)2016-2099 Hnaoyun Inc.
|
||
* @author XingMeng
|
||
* @email hnxsh@foxmail.com
|
||
* @date 2016年11月6日
|
||
* 应用控制基类
|
||
*/
|
||
namespace core\basic;
|
||
|
||
use core\view\View;
|
||
use core\view\Paging;
|
||
|
||
class Controller
|
||
{
|
||
|
||
// 显示模板
|
||
final protected function display($file)
|
||
{
|
||
$view = View::getInstance();
|
||
$content = $view->parser($file);
|
||
$content = $this->runtime($content);
|
||
echo $this->gzip($content);
|
||
exit();
|
||
}
|
||
|
||
// 解析模板
|
||
final protected function parser($file)
|
||
{
|
||
$view = View::getInstance();
|
||
return $view->parser($file);
|
||
}
|
||
|
||
// 缓存页面内容,默认直接显示内容,可传递第二参数false返回内容
|
||
final protected function cache($content, $display = true)
|
||
{
|
||
$view = View::getInstance();
|
||
if (Config::get('tpl_html_cache')) {
|
||
$content = str_replace('{pboot:runtime}', 'Cached at ' . date('Y-m-d H:i:s'), $content);
|
||
} else {
|
||
$content = $this->runtime($content);
|
||
}
|
||
$view->cache($content); // 压缩前缓存
|
||
$content = $this->gzip($content);
|
||
if ($display) {
|
||
echo $content;
|
||
exit();
|
||
} else {
|
||
return $content;
|
||
}
|
||
}
|
||
|
||
// 设置视图主题
|
||
final protected function setTheme($themeName)
|
||
{
|
||
$view = View::getInstance();
|
||
$view->assign('theme', $themeName);
|
||
}
|
||
|
||
// 变量注入接口
|
||
final protected function assign($var, $value)
|
||
{
|
||
$view = View::getInstance();
|
||
$view->assign($var, $value);
|
||
}
|
||
|
||
// 变量获取接口
|
||
final protected function getVar($var)
|
||
{
|
||
$view = View::getInstance();
|
||
return $view->getVar($var);
|
||
}
|
||
|
||
// 手动生成分页信息,返回限制语句
|
||
final protected function page($tatal, $morePageStr = false)
|
||
{
|
||
$page = Paging::getInstance();
|
||
return $page->limit($tatal, $morePageStr);
|
||
}
|
||
|
||
// 获取配置信息
|
||
final protected function config($item = null, $array = false)
|
||
{
|
||
return Config::get($item, $array);
|
||
}
|
||
|
||
// 缓存配置信息
|
||
final protected function setConfig($itemName, array $data)
|
||
{
|
||
return Config::set($itemName, $data);
|
||
}
|
||
|
||
// 写入日志信息
|
||
final protected function log($content, $level = "info")
|
||
{
|
||
Log::write($content, $level);
|
||
}
|
||
|
||
// 解析运行时间标签
|
||
private function runtime($content)
|
||
{
|
||
return str_replace('{pboot:runtime}', 'Processed in ' . round(microtime(true) - START_TIME, 6) . ' second(s).', $content);
|
||
}
|
||
|
||
// 压缩内容
|
||
private function gzip($content)
|
||
{
|
||
if (Config::get('gzip') && ! headers_sent() && extension_loaded("zlib") && strstr($_SERVER["HTTP_ACCEPT_ENCODING"], "gzip")) {
|
||
$content = gzencode($content, 6);
|
||
header("Content-Encoding: gzip");
|
||
header("Vary: Accept-Encoding");
|
||
header("Content-Length: " . strlen($content));
|
||
}
|
||
return $content;
|
||
}
|
||
}
|
||
|