PHP-Framework - PHP hat versucht, eine eigene Template-Engine zu schreiben. Die endgültige Anzeigemethode erfordert tatsächlich eine HTML-Datei.

WBOY
Freigeben: 2016-08-30 09:36:46
Original
1169 Leute haben es durchsucht

Erfordert das PHP eine Funktionsausgabe, wenn es auf Text stößt?
Dies ist die Vorlagenklasse, die ich geschrieben habe:
<?php

/**
 * User: 火蜥蜴制作
 */

namespace Core;

// 模板类
class Template
{
    private $data = [];
    private $path = ''; // 模板路径

    public function __construct() {
        $this->path = Config::get('project.template_path');
    }

    /**
     * 模板赋值
     * @param $key
     * @param $value
     */
    public function assign($key, $value) {
        if(is_array($key)) {
            $this->data = array_merge($this->data, $key);
        } else {
            $this->data[$key] = $value;
        }
    }

    /**
     * 获取路径
     * @param $file
     */
    private function getFilePath($file) {
        $params = explode('.', $file);
        // 模板路径已经加了分隔符
        $path = ROOT . DIRECTORY_SEPARATOR . $this->path;
        foreach ($params as $key => $param) {
            if($key == count($params) - 1) {
                $path .= $param;
            } else {
                $path .= $param . DIRECTORY_SEPARATOR;
            }
        }
        return $path . '.html';
    }


    public function display($file) {
        if(empty($file)) {
            throw new \Exception("Template Can Not Be Empty");
        }
        $realPath = $this->getFilePath($file);
        if(is_file($realPath)) {
            extract($this->data);
            require($realPath);
        } else {
            throw new \Exception("Template:<code>{$realPath} Not Found");
        }
    }
}

                            
                        

Antwortinhalt:

Erfordert das PHP eine Funktionsausgabe, wenn es auf Text stößt?
Dies ist die Vorlagenklasse, die ich geschrieben habe:
<?php

/**
 * User: 火蜥蜴制作
 */

namespace Core;

// 模板类
class Template
{
    private $data = [];
    private $path = ''; // 模板路径

    public function __construct() {
        $this->path = Config::get('project.template_path');
    }

    /**
     * 模板赋值
     * @param $key
     * @param $value
     */
    public function assign($key, $value) {
        if(is_array($key)) {
            $this->data = array_merge($this->data, $key);
        } else {
            $this->data[$key] = $value;
        }
    }

    /**
     * 获取路径
     * @param $file
     */
    private function getFilePath($file) {
        $params = explode('.', $file);
        // 模板路径已经加了分隔符
        $path = ROOT . DIRECTORY_SEPARATOR . $this->path;
        foreach ($params as $key => $param) {
            if($key == count($params) - 1) {
                $path .= $param;
            } else {
                $path .= $param . DIRECTORY_SEPARATOR;
            }
        }
        return $path . '.html';
    }


    public function display($file) {
        if(empty($file)) {
            throw new \Exception("Template Can Not Be Empty");
        }
        $realPath = $this->getFilePath($file);
        if(is_file($realPath)) {
            extract($this->data);
            require($realPath);
        } else {
            throw new \Exception("Template:<code>{$realPath} Not Found");
        }
    }
}

                            
                        
            

  1. require ist keine Funktion

  2. Die Funktion von
  3. require besteht darin, die folgende Zeichenfolge als Dateinamen zu verwenden. Unabhängig davon, ob die Dateierweiterung .php ist, wird die Datei als PHP-Programm betrachtet und in das aktuelle Programm eingeführt laufen.

  4. Wenn das PHP-Programm nicht mit <?php und ?> umschlossen ist, wird es direkt ausgegeben.

require führt die referenzierte Datei als PHP-Datei aus, unabhängig vom Suffix (kein Suffix ist akzeptabel). Einige PHP-Trojaner verwenden dies, um Firewalls zu umgehen.
PHP-Code muss zwischen <?php und ?> platziert werden, um ausgeführt zu werden.

Krabbendämon.

Wenn eine Datei eingebunden wird, verlässt der Parser den PHP-Modus und wechselt am Anfang der Zieldatei in den HTML-Modus und fährt am Ende der Datei fort. Aus diesem Grund muss jeder Code in einer Objektdatei, der als PHP-Code ausgeführt werden muss, in gültigen PHP-Start- und End-Tags enthalten sein.

Wenn

include oder requrie eine Datei ist, werden die Positionen in der Datei, die keine PHP-Start-Tags und End-Tags <?php ?> haben, als HTML geparst.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage