ここにコードを投稿するのはこれが初めてです。このコードは主に PHP テンプレート エンジン テクノロジの研究用です。現在はコンパイルされたバージョンしかありません。さらに多くの意見や最適化のヒントを提供していただければ幸いです。
ファイルとしてフォーマットする方法がわからないので、コピーすることしかできません。
index.phpは設定ファイルです、見れば誰でも理解できます
index.html 使用例
Templates.class.php 基本クラス キャッシュの完全なバージョンが後でリリースされる予定ですが、友人や専門家の指導により、このテンプレート エンジンはコンパイルとキャッシュ、その他の考慮事項を処理するだけで済みます。当面は考慮されません。もちろん、通常の置換モードにも f、w などを追加する必要があります。 。 。 友達が私の Q: を研究してくれることを願っています
Copy_3_of_Templates.class.php ファイルにキャッシュ メソッドが追加されました。プロジェクト内の一部のページをキャッシュする必要があるかどうかは考慮されていません。将来、友達が私に参加できることを願っています。
header('Content-Type:text/html;charset=utf-8'); define('ROOT_HOST',dirname(__FILE__));define('HTML_DIR',ROOT_HOST. '/moban/');define('COMPILED_DIR',ROOT_HOST.'/data/compiled/');define('CACHE_DIR',ROOT_HOST.'/data/cache/');// buffer define('NEW_CACHE', false);//バッファを開くかどうかを決定します NEW_CACHE? ob_start(): null;//テンプレート クラスを導入します require ROOT_HOST.'/lib/Templates.class.php' ; $_moban = new Templates();$array = array(a=>'こんにちは',b=>'あまり上手ではありませんが、とても寂しいです',c=> 「みんなここにいるよ、家にいるのに、どうしてまだ私がいなくて寂しいの?」);$xcvu = 'こんにちは、XCVU です';
$zmq = "こんにちは";
$title = "これは XCVU ですテンプレートエンジンのカスタマイズ方法!" ;
$ling = "「関数」が変更されているため???????????????";
$_moban->assign('ling' , $ling);
$ _moban->assign('title',$title);
$_moban->assign('zmq', $zmq);
$_moban->assign('xcvu', $ xcvu);
$_moban->assign('abc',5>4);
$_moban->assign('array', $array);
$_moban->display('index.html') ;
?>
コードをコピー
- < ;/title>
- *{ margin:0; padding:0;}
- body{ color:#fff; .index {マージン:0 自動; 幅:960px; 背景:#fff; 高さ:50px; パディング:20px; カラー:#000; :none;}
- .index a:hover{ color:#F0F;}
- <スパンスタイル="color:#000;">BBBasd何を言えばいいのかわからない、でも言いたいことがある< br />
-
-
-
-
-
-
No.1
-
-
いいえ。 2
-
-
-
- ........
-
-
-
-
- コードをコピー
-
- /* about:Richard.z
- * site:http://www.zmq.cc
- * E_mail:code@zmq.cc
- * date:2013/01/02/17: 30
- * */
- class Templates{
- private $_CaChe;
- private $_Compiled;
- private $_HtmlFile;
- private $_FileVar;
- private $_KeyArr = array();
-
- public function __construct(){
- if(! is_dir(HTML_DIR) || !is_dir(COMPILED_DIR) || !is_dir(CACHE_DIR)){
- exit('ディレクトリが存在しません!');
- }
- }
-
- public function assign($_var, $_value){
- if(isset($_var) && !empty($_var)){
- $this->_KeyArr[$_var] = $_value;
- }else{
- exit('値を設定してください!');
- }
- }
-
- public function display($_File){
- //設置モジュールの量
- $this->_HtmlFile = HTML_DIR.$_File;
- //設置モジュール
- $this->Compiled = COMPILED_DIR.md5($ _File).$_File.'.php';
- //設置缓存
- $this->_CaChe = CACHE_DIR.md5($_File).$_File.'.html';
- //模板の有無判断
- if( !file_exists($this->_HtmlFile)){
- exit('テンプレート ファイルが存在しません');
- }
- //赋值和判断读取
- if(!$this->_FileVar = file_get_contents($this- >_HtmlFile)){
- exit('テンプレート ファイルの読み取りエラー!');
- }
- //コンパイル済みファイルの日付を編集する場合 < date HtmlFile
- if(!file_exists($this->_Compiled) || filemtime($this->_Compiled) < filemtime($this->_HtmlFile)){
- $this->Set_Comilled();
- }
- //コンパイル済みを含める
- include $this->_Compiled;
- }
-
- //パブリック関数
- パブリック関数 Set_Comilled(){
- $this->SetArr();
- $this->SetInclude();
- if(!file_put_contents($this->>_Compiled, $this ->_FileVar)){
- exit('コンパイルされたファイルでエラーが発生しました!');
- }
- }
- //arr
- プライベート関数 SetArr(){
- $_preaa = array(
- '//',
- '//',
- '//',
- '//',
- '//',
- '//',
- '//',
- '//');
- $_prebb = array(
- ' _KeyArr["$1"];?>',
- '_KeyArr["$1"]) {?>',
- '',
- '',
- '_KeyArr["$1"] as $$2=>$$3) { ?>',
- ' ',
- '',
- '');
- $this->_FileVar = preg_replace($_preaa, $_prebb, $this->_FileVar);
- if(preg_match($_preaa[0], $this->_FileVar)){
- $this->_FileVar = $this->SetArr ($this->_FileVar);
- }
- }
-
- //Include
- プライベート関数 SetInclude(){
- $_preFile = '//';
- if(preg_match($_preFile, $this->_FileVar,$_File)){
- if(!file_exists($_File[1]) || empty($_File)){
- exit('インクルード ファイル エラーです!');
- }
- $this->_FileVar = preg_replace($_preFile, "", $this->_FileVar);
- }
- }
-
- }
- ?>
复制代
- /* about:Richard.z
- * site:http://www.zmq.cc
- * E_mail:code@zmq.cc
- * date:2013/01/02/17: 30 || 2013/01/14/21:35
- * */
- class Templates{
- private $_CaChe;
- private $_Compiled;
- private $_HtmlFile;
- private $_FileVar;
- private $_KeyArr = array();
-
- public function __construct(){
- if(!is_dir(HTML_DIR) || !is_dir(COMPILED_DIR) || !is_dir(CACHE_DIR)){
- exit('ディレクトリが存在しません!');
- }
- }
-
- public function assign ($_var, $_value){
- if(isset($_var) && !empty($_var)){
- $this->_KeyArr[$_var] = $_value;
- }else{
- exit('設定してくださいあなたの値!');
- }
- }
-
- public function display($_File){
- //設置モジュールの变量
- $this->_HtmlFile = HTML_DIR.$_File;
- //設置编译
- $this-> ;_Compiled = COMPILED_DIR.md5($_File).$_File.'.php';
- //設置保存
- $this->_CaChe = CACHE_DIR.md5($_File).$_File.'.html';
- / / テンプレートが存在するかどうか判断
- if(!file_exists($this->_HtmlFile)){
- exit('テンプレートファイルが存在しません');
- }
- //赋值和判断读取
- if(!$this-> ;_FileVar = file_get_contents($this->_HtmlFile)){
- exit('テンプレート ファイルの読み取りエラー!');
- }
- //if edit コンパイル済みファイルの日付 < date HtmlFile
- if(!file_exists($this->_Compiled) || filemtime($this->_Compiled) < filemtime($this->_HtmlFile)){
- $this->Set_Comilled();
- }
- //Compiledを含める
- include $this->_Compiled;
- $this->SetCaChe();
- }
-
- //再生成したい場合の設定キャッシュファイル
- private function SetCaChe(){
- if(!file_exists($this->_CaChe) || filemtime($this->_CaChe) < filemtime($this->_Compiled)){
- if(NEW_CACHE){
- file_put_contents($this-> _CaChe, ob_get_contents());
- ob_end_clean();
- include $this->_CaChe;
- }
- }
- }
-
- // public function
- public function Set_Comilled(){
- $this->SetArr();
- $this->SetInclude();
- if(!file_put_contents($this->_Compiled, $this->_FileVar)){
- exit('コンパイルされたファイルでエラーが発生しました!');
- }
- }
- / /arr
- プライベート関数 SetArr(){
- $_preaa = array(
- '//',
- '//',
- '//',
- '//' ,
- '//',
- '//',
- '//',
- '/
ホットAIツール
Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ
AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。
Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。
人気の記事
ホットツール
メモ帳++7.3.1
使いやすく無料のコードエディター
ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
ドリームウィーバー CS6
ビジュアル Web 開発ツール
SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
ホットトピック
JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。
Apr 05, 2025 am 12:04 AM
JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。
セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか?
Apr 06, 2025 am 12:02 AM
セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。
確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。
Apr 03, 2025 am 12:04 AM
PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。
phpstormでCLIモードをデバッグする方法は?
Apr 01, 2025 pm 02:57 PM
phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。
PHPでの後期静的結合を説明します(静的::)。
Apr 03, 2025 am 12:04 AM
静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。
See all articles
|