⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 api.php

📁 博客系统源码 博客系统源码 博客系统源码
💻 PHP
字号:
<?php/** * Twig::API * ~~~~~~~~~ * * The High-Level API * * :copyright: 2008 by Armin Ronacher. * :license: BSD. *//** * Load the compiler system.  Call this before you access the * compiler! */function twig_load_compiler(){    if (!defined('TWIG_COMPILER_INCLUDED'))        require TWIG_BASE . '/compiler.php';}/** * A helper function that can be used by filters to get the * current active template.  This use useful to access variables * on the template like the charset. */function twig_get_current_template(){    return $GLOBALS['twig_current_template'];}/* the current template that is rendered.  This used used internally   and is an implementation detail.  Don't tamper with that. */$twig_current_template = NULL;/** * This class wraps a template instance as returned by the compiler and * is usually constructed from the `Twig_Loader`. */class Twig_Template{    private $instance;    public $charset;    public $loader;    public function __construct($instance, $charset=NULL, $loader)    {        $this->instance = $instance;        $this->charset = $charset;        $this->loader = $loader;    }    /**     * Render the template with the given context and return it     * as string.     */    public function render($context=NULL)    {        ob_start();        $this->display($context);        return ob_end_clean();    }    /**     * Works like `render()` but prints the output.     */    public function display($context=NULL)    {        global $twig_current_template;        $old = $twig_current_template;        $twig_current_template = $this;        if (is_null($context))            $context = array();        $this->instance->render($context);        $twig_current_template = $old;    }}/** * Baseclass for custom loaders.  Subclasses have to provide a * getFilename method. */class Twig_BaseLoader{    public $cache;    public $charset;    public function __construct($cache=NULL, $charset=NULL)    {        $this->cache = $cache;        $this->charset = $charset;    }    public function getTemplate($name)    {        $cls = $this->requireTemplate($name);        return new Twig_Template(new $cls, $this->charset, $this);    }    public function getCacheFilename($name)    {        return $this->cache . '/twig_' . md5($name) . '.cache';    }    public function requireTemplate($name)    {        $cls = '__TwigTemplate_' . md5($name);        if (!class_exists($cls)) {            if (is_null($this->cache)) {                $this->evalTemplate($name);                return $cls;            }            $fn = $this->getFilename($name);            if (!file_exists($fn))                throw new Twig_TemplateNotFound($name);            $cache_fn = $this->getCacheFilename($name);            if (!file_exists($cache_fn) ||                filemtime($cache_fn) < filemtime($fn)) {                twig_load_compiler();                $fp = @fopen($cache_fn, 'wb');                if (!$fp) {                    $this->evalTemplate($name, $fn);                    return $cls;                }                $compiler = new Twig_FileCompiler($fp);                $this->compileTemplate($name, $compiler, $fn);                fclose($fp);            }            include $cache_fn;        }        return $cls;    }    public function compileTemplate($name, $compiler=NULL, $fn=NULL)    {        twig_load_compiler();        if (is_null($compiler)) {            $compiler = new Twig_StringCompiler();            $returnCode = true;        }        else            $returnCode = false;        if (is_null($fn))            $fn = $this->getFilename($name);        $node = twig_parse(file_get_contents($fn, $name), $name);        $node->compile($compiler);        if ($returnCode)            return $compiler->getCode();    }    private function evalTemplate($name, $fn=NULL)    {        $code = $this->compileTemplate($name, NULL, $fn);        # echo "ORIGINAL: <textarea rows=15 style=\"width: 100%\">".fix(print_r($code, true))."</textarea>";        $code = preg_replace('/(?!echo twig_get_attribute.+)echo "[\\\\tn]+";/', "", $code); # Remove blank lines        #echo "STRIPPED: <textarea rows=15 style=\"width: 100%\">".fix(print_r($code, true))."</textarea>";        eval('?>' . $code);    }}/** * Helper class that loads templates. */class Twig_Loader extends Twig_BaseLoader{    public $folder;    public function __construct($folder, $cache=NULL, $charset=NULL)    {        parent::__construct($cache, $charset);        $this->folder = $folder;    }    public function getFilename($name)    {        if ($name[0] == '/' or preg_match("/[a-zA-Z]:\\\/", $name)) return $name;        $path = array();        foreach (explode('/', $name) as $part) {            if ($part[0] != '.')                array_push($path, $part);        }        return $this->folder . '/' .  implode('/', $path) ;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -