ホームページ バックエンド開発 PHPチュートリアル 単純なテンプレート エンジンのクラスです。この種の研究は完璧ではありません。友人が学習や研究に参加できることを願っています。

単純なテンプレート エンジンのクラスです。この種の研究は完璧ではありません。友人が学習や研究に参加できることを願っています。

Jul 25, 2016 am 09:01 AM

ここにコードを投稿するのはこれが初めてです。このコードは主に 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') ;
  • ?>
  • コードをコピー
    1. <!-- $title -->< ;/title></li> <li><style type="text/css"></li> <li>*{ margin:0; padding:0;}</li> <li>body{ color:#fff; .index {マージン:0 自動; 幅:960px; 背景:#fff; 高さ:50px; パディング:20px; カラー:#000; :none;}</li> <li>.index a:hover{ color:#F0F;}</li> <li></style></li> <li></head></li> <li><body></li> <li><div class="index"></li> <li> <スパンスタイル="color:#000;">BBBasd</span><span style="color:#000;">何を言えばいいのかわからない、でも言いたいことがある</span>< br /></li> <li> <a href="#"><!-- $ling --></a></li> <li> <br /></li> <li> <!-- $xcvu --> </li> <li> <br /></li> <li> <!-- if $abc --></li> <li> <P>No.1</P></li> <li> <!-- else --></li> <li> <P>いいえ。 2 </P></li> <li> <!-- /if --></li> <li> <br /></li> <li> <!-- ループ $array(k,v) --></li> <li> <!-- @ k -->........<!-- @v --><br/><li> <!-- /loop --><li> <!-- #This PHP コメントです --></li> <li></div></li> <li></body></li> <li></html></li> <li> <li> <li>コードをコピー</li> <li> </ol> <div class="blockcode"> <div id="code_zuF"><ol> <li><?php<li>/* about:Richard.z<li> * site:http://www.zmq.cc<li> * E_mail:code@zmq.cc<li> * date:2013/01/02/17: 30<li> * */<li>class Templates{<li> private $_CaChe;<li> private $_Compiled;<li> private $_HtmlFile;<li> private $_FileVar;<li> private $_KeyArr = array();<li> <li> public function __construct(){<li> if(! is_dir(HTML_DIR) || !is_dir(COMPILED_DIR) || !is_dir(CACHE_DIR)){<li> exit('ディレクトリが存在しません!');<li> }<li> }<li> <li> public function assign($_var, $_value){ <li> if(isset($_var) && !empty($_var)){<li> $this->_KeyArr[$_var] = $_value;<li> }else{<li> exit('値を設定してください!');<li> } <li> }<li> <li> public function display($_File){<li> //設置モジュールの量<li> $this->_HtmlFile = HTML_DIR.$_File;<li> //設置モジュール<li> $this->Compiled = COMPILED_DIR.md5($ _File).$_File.'.php';<li> //設置缓存<li> $this->_CaChe = CACHE_DIR.md5($_File).$_File.'.html';</li> <li> //模板の有無判断</li> <li> if( !file_exists($this->_HtmlFile)){</li> <li> exit('テンプレート ファイルが存在しません');</li> <li> }</li> <li> //赋值和判断读取</li> <li> if(!$this->_FileVar = file_get_contents($this- >_HtmlFile)){</li> <li> exit('テンプレート ファイルの読み取りエラー!');</li> <li> }</li> <li> //コンパイル済みファイルの日付を編集する場合 < date HtmlFile <li> if(!file_exists($this->_Compiled) || filemtime($this->_Compiled) < filemtime($this->_HtmlFile)){</li> <li> $this->Set_Comilled();</li> <li> }</li> <li> //コンパイル済みを含める</li> <li> include $this->_Compiled; </li> <li> }</li> <li> <li> //パブリック関数</li> <li>パブリック関数 Set_Comilled(){</li> <li> $this->SetArr();</li> <li> $this->SetInclude();</li> <li> if(!file_put_contents($this->>_Compiled, $this ->_FileVar)){</li> <li> exit('コンパイルされたファイルでエラーが発生しました!');</li> <li> }</li> <li> }</li> <li> //arr</li> <li> プライベート関数 SetArr(){</li> <li> $_preaa = array(</li> <li> '/<!--s+$ ([w]+)s+-->/',<li> '/<!--s+ifs+$([w]+)s+-->/',<li> '/<!--s+/ ifs+-->/',<li> '/<!--s+elses+-->/',<li> '/<!--s+loops+$([w]+)(([w]+ ),([w]+))s+-->/',<li> '/<!--s+/loops+-->/',<li> '/<!--s+@([w]+ )s+-->/',<li> '/<!--s+#(.*)s+-->/');<li> $_prebb = array(<li> '<?php echo $this-> _KeyArr["$1"];?>',</li> <li> '<?php if ($this->_KeyArr["$1"]) {?>',</li> <li> '<?php } ?>', </li> <li> '<?php } else { ?>',</li> <li> '<?php foreach ($this->_KeyArr["$1"] as $$2=>$$3) { ?>',</li> <li> ' <?php } ?>',</li> <li> '<?php echo $$1; ?>',</li> <li> '<?php /* $1 */ ?>');</li> <li> $this->_FileVar = preg_replace($_preaa, $_prebb, $this->_FileVar);</li> <li> if(preg_match($_preaa[0], $this->_FileVar)){</li> <li> $this->_FileVar = $this->SetArr ($this->_FileVar);</li> <li> }</li> <li> }</li> <li> <li> //Include</li> <li> プライベート関数 SetInclude(){</li> <li> $_preFile = '/<!--s+includes+file="([w.-]+ )"s+-->/';<li> if(preg_match($_preFile, $this->_FileVar,$_File)){</li> <li> if(!file_exists($_File[1]) || empty($_File)){</li> <li> exit('インクルード ファイル エラーです!');</li> <li> }</li> <li> $this->_FileVar = preg_replace($_preFile, "<?php include '$1'; ?>", $this->_FileVar);</li> <li> }</li> <li> }</li> <li> </li> <li>}</li> <li>?></li> </ol></div> <em onclick="copycode($('code_zuF'));">复制代</em> </div> <div class="blockcode"><div id="code_pmx"><ol> <li><?php<li>/* about:Richard.z<li> * site:http://www.zmq.cc<li> * E_mail:code@zmq.cc<li> * date:2013/01/02/17: 30 || 2013/01/14/21:35<li> * */<li>class Templates{<li> private $_CaChe;<li> private $_Compiled;<li> private $_HtmlFile;<li> private $_FileVar;<li> private $_KeyArr = array();<li> <li> public function __construct(){<li> if(!is_dir(HTML_DIR) || !is_dir(COMPILED_DIR) || !is_dir(CACHE_DIR)){<li> exit('ディレクトリが存在しません!');<li> }<li> }<li> <li> public function assign ($_var, $_value){<li> if(isset($_var) && !empty($_var)){<li> $this->_KeyArr[$_var] = $_value;</li> <li> }else{</li> <li> exit('設定してくださいあなたの値!');</li> <li> } </li> <li> }</li> <li> </li> <li> public function display($_File){</li> <li> //設置モジュールの变量</li> <li> $this->_HtmlFile = HTML_DIR.$_File;</li> <li> //設置编译</li> <li> $this-> ;_Compiled = COMPILED_DIR.md5($_File).$_File.'.php';</li> <li> //設置保存</li> <li> $this->_CaChe = CACHE_DIR.md5($_File).$_File.'.html';</li> <li> / / テンプレートが存在するかどうか判断</li> <li> if(!file_exists($this->_HtmlFile)){</li> <li> exit('テンプレートファイルが存在しません');</li> <li> }</li> <li> //赋值和判断读取</li> <li> if(!$this-> ;_FileVar = file_get_contents($this->_HtmlFile)){</li> <li> exit('テンプレート ファイルの読み取りエラー!');</li> <li> }</li> <li> //if edit コンパイル済みファイルの日付 < date HtmlFile <li> if(!file_exists($this->_Compiled) || filemtime($this->_Compiled) < filemtime($this->_HtmlFile)){</li> <li> $this->Set_Comilled();</li> <li> }</li> <li> //Compiledを含める</li> <li> include $this->_Compiled;</li> <li> $this->SetCaChe();</li> <li> }</li> <li> <li> //再生成したい場合の設定キャッシュファイル</li> <li> private function SetCaChe(){</li> <li> if(!file_exists($this->_CaChe) || filemtime($this->_CaChe) < filemtime($this->_Compiled)){</li> <li> if(NEW_CACHE){</li> <li> file_put_contents($this-> _CaChe, ob_get_contents());</li> <li> ob_end_clean();</li> <li> include $this->_CaChe;</li> <li> }</li> <li> }</li> <li> }</li> <li> <li> // public function</li> <li> public function Set_Comilled(){</li> <li> $this->SetArr(); </li> <li> $this->SetInclude();</li> <li> if(!file_put_contents($this->_Compiled, $this->_FileVar)){</li> <li> exit('コンパイルされたファイルでエラーが発生しました!');</li> <li> }</li> <li> }</li> <li> / /arr</li> <li>プライベート関数 SetArr(){</li> <li> $_preaa = array(</li> <li> '/<!--s+$([w]+)s+-->/',</li> <li> '/<!--s+ifs+ $([w]+)s+-->/',<li> '/<!--s+/ifs+-->/',<li> '/<!--s+elses+-->/' ,<li> '/<!--s+loops+$([w]+)(([w]+),([w]+))s+-->/',<li> '/<!-- s+/loops+-->/',<li> '/<!--s+@([w]+)s+-->/',<li> '/<!--s+#(.*)s+- ->/');</li> <li> $_prebb = array(</li> <li> '<?php echo $this->_KeyArr["$1"];?>',</li> <li> '<?php if ($this-> _KeyArr["$1"]) {?>',</li> <li> '<?php } ?>',</li> <li> '<?php } else { ?>',</li> <li> '<?php foreach ($this- >_KeyArr["$1"] as $$2=>$$3) { ?>',</li> <li> '<?php } ?>',</li> <li> '<?php echo $$1; ?>',</li> <li> '<?php /* $1 */ ?>');</li> <li> $this->_FileVar = preg_replace($_preaa, $_prebb, $this->_FileVar);</li> <li> if(preg_match ($_preaa[0], $this->_FileVar)){</li> <li> $this->_FileVar = $this->SetArr($this->_FileVar);</li> <li> }</li> <li> }</li> <li> <li> //Include</li> <li> private function SetInclude(){</li> <li> $_preFile = '/</li> </ol></div></div> </div></div> </td></tr></table> </div> </div> <div class="wzconShengming_sp"> <div class="bzsmdiv_sp">このウェブサイトの声明</div> <div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div> </div> </div> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="2507867629"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <div class="AI_ToolDetails_main4sR"> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5902227090019525" data-ad-slot="3653428331" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <!-- <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>人気の記事</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796785841.html" title="アサシンのクリードシャドウズ:シーシェルリドルソリューション" class="phpgenera_Details_mainR4_bottom_title">アサシンのクリードシャドウズ:シーシェルリドルソリューション</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3週間前</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796789525.html" title="Windows11 KB5054979の新しいものと更新の問題を修正する方法" class="phpgenera_Details_mainR4_bottom_title">Windows11 KB5054979の新しいものと更新の問題を修正する方法</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>2週間前</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796783009.html" title="アサシンクリードシャドウ - 鍛冶屋を見つけて武器と鎧のカスタマイズを解除する方法" class="phpgenera_Details_mainR4_bottom_title">アサシンクリードシャドウ - 鍛冶屋を見つけて武器と鎧のカスタマイズを解除する方法</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1 か月前</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796785857.html" title="Atomfallのクレーンコントロールキーカードを見つける場所" class="phpgenera_Details_mainR4_bottom_title">Atomfallのクレーンコントロールキーカードを見つける場所</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3週間前</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796784440.html" title="<🎜>:Dead Rails-すべての課題を完了する方法" class="phpgenera_Details_mainR4_bottom_title"><🎜>:Dead Rails-すべての課題を完了する方法</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3週間前</span> <span>By DDD</span> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ja/article.html">もっと見る</a> </div> </div> </div> --> <div class="phpgenera_Details_mainR3"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hottools2.png" alt="" /> <h2>ホットAIツール</h2> </div> <div class="phpgenera_Details_mainR3_bottom"> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411540686492.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undresser.AI Undress" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_title"> <h3>Undresser.AI Undress</h3> </a> <p>リアルなヌード写真を作成する AI 搭載アプリ</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411552797167.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Clothes Remover" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_title"> <h3>AI Clothes Remover</h3> </a> <p>写真から衣服を削除するオンライン AI ツール。</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173410641626608.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undress AI Tool" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_title"> <h3>Undress AI Tool</h3> </a> <p>脱衣画像を無料で</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411529149311.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Clothoff.io" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_title"> <h3>Clothoff.io</h3> </a> <p>AI衣類リムーバー</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173414504068133.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Video Face Swap" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_title"> <h3>Video Face Swap</h3> </a> <p>完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。</p> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ja/ai">もっと見る</a> </div> </div> </div> <script src="https://sw.php.cn/hezuo/cac1399ab368127f9b113b14eb3316d0.js" type="text/javascript"></script> <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>人気の記事</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796785841.html" title="アサシンのクリードシャドウズ:シーシェルリドルソリューション" class="phpgenera_Details_mainR4_bottom_title">アサシンのクリードシャドウズ:シーシェルリドルソリューション</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3週間前</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796789525.html" title="Windows11 KB5054979の新しいものと更新の問題を修正する方法" class="phpgenera_Details_mainR4_bottom_title">Windows11 KB5054979の新しいものと更新の問題を修正する方法</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>2週間前</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796783009.html" title="アサシンクリードシャドウ - 鍛冶屋を見つけて武器と鎧のカスタマイズを解除する方法" class="phpgenera_Details_mainR4_bottom_title">アサシンクリードシャドウ - 鍛冶屋を見つけて武器と鎧のカスタマイズを解除する方法</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1 か月前</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796785857.html" title="Atomfallのクレーンコントロールキーカードを見つける場所" class="phpgenera_Details_mainR4_bottom_title">Atomfallのクレーンコントロールキーカードを見つける場所</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3週間前</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796784440.html" title="<🎜>:Dead Rails-すべての課題を完了する方法" class="phpgenera_Details_mainR4_bottom_title"><🎜>:Dead Rails-すべての課題を完了する方法</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3週間前</span> <span>By DDD</span> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ja/article.html">もっと見る</a> </div> </div> </div> <div class="phpgenera_Details_mainR3"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hottools2.png" alt="" /> <h2>ホットツール</h2> </div> <div class="phpgenera_Details_mainR3_bottom"> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/toolset/development-tools/92" title="メモ帳++7.3.1" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab96f0f39f7357.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="メモ帳++7.3.1" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/toolset/development-tools/92" title="メモ帳++7.3.1" class="phpmain_tab2_mids_title"> <h3>メモ帳++7.3.1</h3> </a> <p>使いやすく無料のコードエディター</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/toolset/development-tools/93" title="SublimeText3 中国語版" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab97a3baad9677.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 中国語版" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/toolset/development-tools/93" title="SublimeText3 中国語版" class="phpmain_tab2_mids_title"> <h3>SublimeText3 中国語版</h3> </a> <p>中国語版、とても使いやすい</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/toolset/development-tools/121" title="ゼンドスタジオ 13.0.1" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab97ecd1ab2670.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="ゼンドスタジオ 13.0.1" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/toolset/development-tools/121" title="ゼンドスタジオ 13.0.1" class="phpmain_tab2_mids_title"> <h3>ゼンドスタジオ 13.0.1</h3> </a> <p>強力な PHP 統合開発環境</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/toolset/development-tools/469" title="ドリームウィーバー CS6" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58d0e0fc74683535.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="ドリームウィーバー CS6" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/toolset/development-tools/469" title="ドリームウィーバー CS6" class="phpmain_tab2_mids_title"> <h3>ドリームウィーバー CS6</h3> </a> <p>ビジュアル Web 開発ツール</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/toolset/development-tools/500" title="SublimeText3 Mac版" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58d34035e2757995.png?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 Mac版" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/toolset/development-tools/500" title="SublimeText3 Mac版" class="phpmain_tab2_mids_title"> <h3>SublimeText3 Mac版</h3> </a> <p>神レベルのコード編集ソフト(SublimeText3)</p> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ja/ai">もっと見る</a> </div> </div> </div> <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>ホットトピック</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/gmailyxdlrkzn" title="Gmailメールのログイン入り口はどこですか?" class="phpgenera_Details_mainR4_bottom_title">Gmailメールのログイン入り口はどこですか?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>7643</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>15</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/cakephp-tutor" title="CakePHP チュートリアル" class="phpgenera_Details_mainR4_bottom_title">CakePHP チュートリアル</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1392</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>52</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/steamdzhmcssmgs" title="Steamのアカウント名の形式は何ですか" class="phpgenera_Details_mainR4_bottom_title">Steamのアカウント名の形式は何ですか</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>91</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>11</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/winactivationkeyper" title="Win11 Activation Key Permanent" class="phpgenera_Details_mainR4_bottom_title">Win11 Activation Key Permanent</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>72</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>19</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/newyorktimesdailybrief" title="NYTの接続はヒントと回答です" class="phpgenera_Details_mainR4_bottom_title">NYTの接続はヒントと回答です</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>33</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>151</span> </div> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ja/faq/zt">もっと見る</a> </div> </div> </div> </div> </div> <div class="Article_Details_main2"> <div class="phpgenera_Details_mainL4"> <div class="phpmain1_2_top"> <a href="javascript:void(0);" class="phpmain1_2_top_title">Related knowledge<img src="/static/imghw/index2_title2.png" alt="" /></a> </div> <div class="phpgenera_Details_mainL4_info"> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/1796787277.html" title="Alipay PHP SDK転送エラー:「クラスの看板を宣言できない」という問題を解決する方法は?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/174303625625009.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Alipay PHP SDK転送エラー:「クラスの看板を宣言できない」という問題を解決する方法は?" /> </a> <a href="https://www.php.cn/ja/faq/1796787277.html" title="Alipay PHP SDK転送エラー:「クラスの看板を宣言できない」という問題を解決する方法は?" class="phphistorical_Version2_mids_title">Alipay PHP SDK転送エラー:「クラスの看板を宣言できない」という問題を解決する方法は?</a> <span class="Articlelist_txts_time">Apr 01, 2025 am 07:21 AM</span> <p class="Articlelist_txts_p">Alipay Php ...</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/1796790404.html" title="JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174378264165720.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。" /> </a> <a href="https://www.php.cn/ja/faq/1796790404.html" title="JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。" class="phphistorical_Version2_mids_title">JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。</a> <span class="Articlelist_txts_time">Apr 05, 2025 am 12:04 AM</span> <p class="Articlelist_txts_p">JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/1796791139.html" title="セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174386897193010.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか?" /> </a> <a href="https://www.php.cn/ja/faq/1796791139.html" title="セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか?" class="phphistorical_Version2_mids_title">セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか?</a> <span class="Articlelist_txts_time">Apr 06, 2025 am 12:02 AM</span> <p class="Articlelist_txts_p">セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/1796788900.html" title="確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174360984159295.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。" /> </a> <a href="https://www.php.cn/ja/faq/1796788900.html" title="確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。" class="phphistorical_Version2_mids_title">確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。</a> <span class="Articlelist_txts_time">Apr 03, 2025 am 12:04 AM</span> <p class="Articlelist_txts_p">PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/1796786988.html" title="システムの再起動後にUnixSocketの権限を自動的に設定する方法は?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/174304058392432.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="システムの再起動後にUnixSocketの権限を自動的に設定する方法は?" /> </a> <a href="https://www.php.cn/ja/faq/1796786988.html" title="システムの再起動後にUnixSocketの権限を自動的に設定する方法は?" class="phphistorical_Version2_mids_title">システムの再起動後にUnixSocketの権限を自動的に設定する方法は?</a> <span class="Articlelist_txts_time">Mar 31, 2025 pm 11:54 PM</span> <p class="Articlelist_txts_p">システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/1796787531.html" title="phpstormでCLIモードをデバッグする方法は?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/174277501469931.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="phpstormでCLIモードをデバッグする方法は?" /> </a> <a href="https://www.php.cn/ja/faq/1796787531.html" title="phpstormでCLIモードをデバッグする方法は?" class="phphistorical_Version2_mids_title">phpstormでCLIモードをデバッグする方法は?</a> <span class="Articlelist_txts_time">Apr 01, 2025 pm 02:57 PM</span> <p class="Articlelist_txts_p">phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/1796788902.html" title="PHPでの後期静的結合を説明します(静的::)。" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174360989012815.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="PHPでの後期静的結合を説明します(静的::)。" /> </a> <a href="https://www.php.cn/ja/faq/1796788902.html" title="PHPでの後期静的結合を説明します(静的::)。" class="phphistorical_Version2_mids_title">PHPでの後期静的結合を説明します(静的::)。</a> <span class="Articlelist_txts_time">Apr 03, 2025 am 12:04 AM</span> <p class="Articlelist_txts_p">静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/1796786130.html" title="フレームワークセキュリティ機能:脆弱性から保護します。" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/202503/28/2025032817115475121.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="フレームワークセキュリティ機能:脆弱性から保護します。" /> </a> <a href="https://www.php.cn/ja/faq/1796786130.html" title="フレームワークセキュリティ機能:脆弱性から保護します。" class="phphistorical_Version2_mids_title">フレームワークセキュリティ機能:脆弱性から保護します。</a> <span class="Articlelist_txts_time">Mar 28, 2025 pm 05:11 PM</span> <p class="Articlelist_txts_p">記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。</p> </div> </div> <a href="https://www.php.cn/ja/be/" class="phpgenera_Details_mainL4_botton"> <span>See all articles</span> <img src="/static/imghw/down_right.png" alt="" /> </a> </div> </div> </div> </main> <footer> <div class="footer"> <div class="footertop"> <img src="/static/imghw/logo.png" alt=""> <p>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p> </div> <div class="footermid"> <a href="https://www.php.cn/ja/about/us.html">私たちについて</a> <a href="https://www.php.cn/ja/about/disclaimer.html">免責事項</a> <a href="https://www.php.cn/ja/update/article_0_1.html">Sitemap</a> </div> <div class="footerbottom"> <p> © php.cn All rights reserved </p> </div> </div> </footer> <input type="hidden" id="verifycode" value="/captcha.html"> <script>layui.use(['element', 'carousel'], function () {var element = layui.element;$ = layui.jquery;var carousel = layui.carousel;carousel.render({elem: '#test1', width: '100%', height: '330px', arrow: 'always'});$.getScript('/static/js/jquery.lazyload.min.js', function () {$("img").lazyload({placeholder: "/static/images/load.jpg", effect: "fadeIn", threshold: 200, skip_invisible: false});});});</script> <script src="/static/js/common_new.js"></script> <script type="text/javascript" src="/static/js/jquery.cookie.js?1745317246"></script> <script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script> <link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all' /> <script type='text/javascript' src='/static/js/viewer.min.js?1'></script> <script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script> <script type="text/javascript" src="/static/js/global.min.js?5.5.53"></script> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function () { var u = "https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u + 'matomo.php']); _paq.push(['setSiteId', '9']); var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); })(); </script> <script> // top layui.use(function () { var util = layui.util; util.fixbar({ on: { mouseenter: function (type) { layer.tips(type, this, { tips: 4, fixed: true, }); }, mouseleave: function (type) { layer.closeAll("tips"); }, }, }); }); document.addEventListener("DOMContentLoaded", (event) => { // 定义一个函数来处理滚动链接的点击事件 function setupScrollLink(scrollLinkId, targetElementId) { const scrollLink = document.getElementById(scrollLinkId); const targetElement = document.getElementById(targetElementId); if (scrollLink && targetElement) { scrollLink.addEventListener("click", (e) => { e.preventDefault(); // 阻止默认链接行为 targetElement.scrollIntoView({ behavior: "smooth" }); // 平滑滚动到目标元素 }); } else { console.warn( `Either scroll link with ID '${scrollLinkId}' or target element with ID '${targetElementId}' not found.` ); } } // 使用该函数设置多个滚动链接 setupScrollLink("Article_Details_main1L2s_1", "article_main_title1"); setupScrollLink("Article_Details_main1L2s_2", "article_main_title2"); setupScrollLink("Article_Details_main1L2s_3", "article_main_title3"); setupScrollLink("Article_Details_main1L2s_4", "article_main_title4"); setupScrollLink("Article_Details_main1L2s_5", "article_main_title5"); setupScrollLink("Article_Details_main1L2s_6", "article_main_title6"); // 可以继续添加更多的滚动链接设置 }); window.addEventListener("scroll", function () { var fixedElement = document.getElementById("Article_Details_main1Lmain"); var scrollTop = window.scrollY || document.documentElement.scrollTop; // 兼容不同浏览器 var clientHeight = window.innerHeight || document.documentElement.clientHeight; // 视口高度 var scrollHeight = document.documentElement.scrollHeight; // 页面总高度 // 计算距离底部的距离 var distanceToBottom = scrollHeight - scrollTop - clientHeight; // 当距离底部小于或等于300px时,取消固定定位 if (distanceToBottom <= 980) { fixedElement.classList.remove("Article_Details_main1Lmain"); fixedElement.classList.add("Article_Details_main1Lmain_relative"); } else { // 否则,保持固定定位 fixedElement.classList.remove("Article_Details_main1Lmain_relative"); fixedElement.classList.add("Article_Details_main1Lmain"); } }); </script> <script> document.addEventListener('DOMContentLoaded', function() { const mainNav = document.querySelector('.Article_Details_main1Lmain'); const header = document.querySelector('header'); if (mainNav) { window.addEventListener('scroll', function() { const scrollPosition = window.scrollY; if (scrollPosition > 84) { mainNav.classList.add('fixed'); } else { mainNav.classList.remove('fixed'); } }); } }); </script> </body> </html>