コードの説明はスマートテンプレートエンジンの原理に似ています
先贴下目录结构:
<code> ls compiled/ index.php source/ ss.class.PHP compiled 模版编辑后的目录 index.php source 模版源文件夹 ss.clsss.php 山寨类smarty文件夹 </code>
<code>ss.clsss.php </code>
<code><?php class Template{ private $templateDir;//源文件文件夹 private $compileDir;//编译之后文件夹 private $leftTag="{#";//需要替换的左边标记 private $rightTag="#}";//需要替换的左边标记 private $templateExtName=".html"; private $currentTemp;//当前正在编译的模版文件名 private $outputHtml;//正在读取的模版文件 private $varPool=array();//模版变量池 public function__construct($templateDir,$compileDir,$leftTag=null,$rightTag=null,$templateExtName=null){ $this->templateDir=$templateDir; $this->compileDir=$compileDir; if(!empty($leftTag))$this->leftTag=$leftTag; if(!empty($rightTag))$this->rightTag=$rightTag; if(!empty($templateExtName))$this->templateExtName=$templateExtName; } // 把用到的变量放入到变量池子中 public function assign($tag,$var){ $this->varPool[$tag]=$var; } // 取出一条变量,用于下面的str_replace正则替换 public function getVar($tag){ return $this->varPool[$tag]; } //获取模版源文件 public function getSourceTemplate($templateName){ $this->currentTemp=$templateName; // 拼接完整文件名 $sourceFileName=$this->templateDir.$this->currentTemp.$this->templateExtName; $this->outputHtml=file_get_contents($sourceFileName); } // 编译 public function compileTemplate($templateName=null){ // 获取当前需要编译的模版 $templateName=empty($templateName)?$this->currentTemp:$templateName; // $pattern='/\{#(\$[a-zA-Z_]\w+)#\}/';// 符合php变量命名 //preg_quote 可对用户界定的左右定界符中出现. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -进行转义 $pattern="/".preg_quote($this->leftTag); //前后加上空格匹配任意次匹配类似<h1>{# $name #}</h1> $pattern.=' *\$([a-zA-Z_]\w*) *'; $pattern.=preg_quote($this->rightTag)."/"; $this->outputHtml=preg_replace($pattern, '<?php echo $this->getVar(\'$1\');?>', $this->outputHtml);// $1写成\\1也可以 // 注意不要用双引号,会解析getvar Template::$getVar报notice错误 $this->outputHtml=preg_replace($pattern, "<?php echo $this->getVar(\\1);?>", $this->outputHtml); $compileFileName=$this->compileDir.md5($templateName).$this->templateExtName; file_put_contents($compileFileName, $this->outputHtml); } // 输出 public function display($templateName=null){ $templateName=empty($templateName)?$this->currentTemp:$templateName; include($this->compileDir.md5($templateName).$this->templateExtName); } }</code>
简单调用如下:(index.php
中内容)
<code><?php include('ss.class.php'); $basedir=str_replace('\\', '/', dirname(__FILE__));//兼容linux等区分大小写平台 $test=new Template($basedir."/source/",$basedir."/compiled/"); $test->assign('name','iamtb'); $test->assign('pageTitle','tbtbt'); $test->getSourceTemplate('index'); $test->compileTemplate('index'); $test->display('index'); </code>
以上就介绍了代码解释类似smart模版引擎原理,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

Windows 11 で Snipping Tool が機能しない理由 問題の根本原因を理解すると、適切な解決策を見つけるのに役立ちます。 Snipping Tool が正しく動作しない主な理由は次のとおりです。 フォーカス アシスタントがオンになっている: これにより、Snipping Tool が開かなくなります。破損したアプリケーション: 起動時にスニッピング ツールがクラッシュする場合は、破損している可能性があります。古いグラフィック ドライバー: 互換性のないドライバーは、スニッピング ツールに干渉する可能性があります。他のアプリケーションからの干渉: 実行中の他のアプリケーションが Snipping Tool と競合する可能性があります。証明書の有効期限が切れています: アップグレード プロセス中のエラーにより、この問題が発生する可能性があります。これらの簡単な解決策は、ほとんどのユーザーに適しており、特別な技術知識は必要ありません。 1. Windows および Microsoft Store アプリを更新する

パート 1: 最初のトラブルシューティング手順 Apple のシステムステータスを確認する: 複雑な解決策を掘り下げる前に、基本から始めましょう。問題はデバイスにあるのではなく、Apple のサーバーがダウンしている可能性があります。 Apple のシステム ステータス ページにアクセスして、AppStore が適切に動作しているかどうかを確認してください。問題があれば、Apple が修正してくれるのを待つしかありません。インターネット接続を確認します。「AppStore に接続できません」問題は接続不良が原因である場合があるため、安定したインターネット接続があることを確認してください。 Wi-Fi とモバイル データを切り替えるか、ネットワーク設定をリセットしてみてください ([一般] > [リセット] > [ネットワーク設定のリセット] > [設定])。 iOS バージョンを更新します。

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Watch4proとgtはそれぞれ特徴や適用シーンが異なりますが、総合的な機能、高性能、スタイリッシュな外観を重視し、価格は高くてもいいという方にはWatch 4 Proの方が適しているかもしれません。高度な機能要件はなく、バッテリー寿命と手頃な価格を重視する場合は、GT シリーズの方が適しているかもしれません。最終的な選択は、個人のニーズ、予算、好みに基づいて決定する必要がありますが、購入する前に自分のニーズを慎重に検討し、さまざまな製品のレビューや比較を参照して、より情報に基づいた選択を行うことをお勧めします。

同僚は、これによって指摘されたバグのために立ち往生しました。Vue2 のこの指摘の問題により、アロー関数が使用され、その結果、対応する props を取得できなくなりました。私がそれを彼に紹介したとき、彼はそれを知りませんでした。その後、私はわざとフロントエンド コミュニケーション グループに目を向けました。これまでのところ、フロントエンド プログラマーの少なくとも 70% はまだそれを理解していません。今日私はそれを共有しますyou this link. もしすべてが間違っている場合 まだ学習していない場合は、大きな口を与えてください。

iPadOS 17.4 で iPad のバッテリー寿命を最適化する方法 バッテリー寿命の延長はモバイル デバイス エクスペリエンスの鍵であり、iPad がその良い例です。 iPad のバッテリーの消耗が早すぎると感じても、心配しないでください。iPadOS 17.4 には、デバイスの実行時間を大幅に延長できるトリックや微調整が多数あります。この詳細なガイドの目的は、情報を提供するだけではなく、iPad の使用方法を変え、全体的なバッテリー管理を強化し、充電せずにデバイスをより長く使用できるようにすることです。ここで概説したプラクティスを採用することで、個人のニーズや使用パターンに合わせてテクノロジーをより効率的かつ意識的に使用するための一歩を踏み出すことができます。主要なエネルギー消費者を特定する

この記事は、vue ソース コードを解釈するのに役立ち、これを使用して Vue2 のさまざまなオプションのプロパティにアクセスできる理由を紹介します。
