PHP は疑似静的 URL を実装します。プロセス全体が詳しく説明されています
?
URL を静的にするには、Apache、nginx、htaccess などを使用しますが、PHP を使用して静的 URL を実現することはほとんどありません。PHP を使用して静的 URL を実現することは、個人的には推奨しません。静的 URL
?
1. URL の静的実装の原則
?
1. 動的 URL を静的 URL に変換するプログラムを使用します。変換方法は統一されたインターフェイスであることが望ましいです。静的 URL を HTML に配置すると、ページを通して見えるものが静的 URL になります。
?
2. Apache などで、書き換えモジュールをロードし、書き換えルールを追加します。このようにして、ページ内の静的 URL をクリックすると、正しい URL にリダイレクトできます。 PHP ファイルは引き続き実行されますが、ブラウザーのアドレス バーに表示される静的 URL はそのまま残ります。
?
php を使用して静的 URL を実現する場合は、アドレスバーにも静的 URL を保持する必要があります。これはさらに面倒な例です。
?
?
2 番目に、動的 URL を静的 URL に変換します
?
?
<?php //将url转换成静态url function url_rewrite($file,$params = array (),$html = "",$rewrite = true) { if ($rewrite) { //开发阶段是不要rewrite,所在开发的时候,把$rewrite = false $url = ($file == 'index') ? '' : '/' . $file; if (!empty ($params) && is_array($params)) $url .= '/' . implode('/', $params); if (!empty ($html)) $url .= '.' . $html; } else { $url = ($file == 'index') ? '/' : '/' . $file; if (substr($url, -4) != '.php' && $file != 'index') $url .= '.php'; if (!empty ($params) && is_array($params)) $url .= '?' . http_build_query($params); } return $url; } echo url_rewrite('test.php',array('class'=>"User",'act'=>'check','name'=>'tank')); //$rewrite = false的情况下,显示如下/test.php?class=User&act=check&name=tank echo url_rewrite('test.php', array ('class'=>"User",'act'=>'check','name'=>'tank')); //$rewrite = true的情况下,显示如下/test.php/User/check/tank echo url_rewrite('test', array ('class'=>"User",'act'=>'check','name'=>'tank')); //$rewrite = true的情况下,显示如下/test/User/check/tank echo url_rewrite('test', array ('class'=>"User",'act'=>'check','name'=>'tank'),'html'); //$rewrite = true的情况下,显示如下/test/User/check/tank.html ?> <a href="./test3<?php%20echo%20url_rewrite('test.php',array('class'=>" user>'check','name'=>'tank'));?>">test</a>?
上記は、動的 URL を静的 URL に変換するメソッドを記述しているだけで、次のようにページにリンクが生成されます。
??
?
<a href="./test3/test.php/User/check/tank">test</a>ここを直接クリックすると、tank ディレクトリを見つけることができないため、必ず 404 エラーが発生します。ここが難しいので、見つからないディレクトリやファイルには php ファイルを指定する必要があります。これには、Apache、nginx、htaccess などを使用する必要があります。
?
三、統一された入口を指定する
??
?
RewriteCond %{REQUEST_FILENAME} !-f //找不到文件 RewriteCond %{REQUEST_FILENAME} !-d //打不到目录 RewriteRule . /test3/index.php [L]?
.htaccess で実装する場合でも、Apache などの設定ファイルに記述する場合でも、すべてが可能です。上記の 3 つの文は、ディレクトリが見つからない場合は、index.php ファイルに移動します。ファイルが見つからない場合は、index.php に移動します。
?
これを実行した後、http://localhost/test3/test.php/User/check/tank にアクセスすると、index.php にリダイレクトされます。php ファイルがわかったので、次のことは簡単です。ハンドル。 。
?
以下の内容は全て http://localhost/test3/test.php/User/check/tank を書き換えて動作させており、他の方法も同様です。
?
?
4、index.php ファイル
??
?
<?php $filename = $_SERVER['REQUEST_URI']; //请求的url /**请求的url,"/test3/test.php/User/check/tank" * test.php 要去的php文件 * User 是class名 * check 是class中的方法名 * tank 是要传到check的参数*/ preg_match("/(\w+\.php)/",$filename,$match); //查找php文件名 $array = explode('/',$filename); //将静态url进行分割 $key = array_keys($array,$match[0]); //得到文件所对应的下标Array ( [0] => 2 ) $file_array = array_slice($array,0,$key[0]+1); //Array ( [0] => [1] => test3 [2] => test.php ) $param_array = array_slice($array,$key[0]+1); //Array ( [0] => User [1] => check [2] => tank ) $file_path = implode('/',$file_array); if($array[$key[0]] != "index.php"){ include_once($array[$key[0]]); //包函请求url中的php文件,在这里是test.php } if(class_exists($param_array[0])){ //判断一下test.php这个文件中有没有User这个class $obj = new $param_array[0]; if(method_exists($obj,$param_array[1])){ //判断一下User这个class中有有没有check这个方法 $obj->$param_array[1]($param_array[2]); //调用这个方法,结果是(我的名子叫tank) } } ?>?
5. test.php ファイル
??
?
<?php class User { public function check($name){ echo "我的名子叫".$name; } } ?>?
ここで、URL http://localhost/test3/test.php/User/check/tank にアクセスすると、
?
結果は次のとおりです。私の名前はタンクで、アドレス バーは静的なままです。
?
ここでは、php による簡単な URL 書き換えプロセスを完了しました。実際、私たちは今でも .htaccess や Apache などを使用していますが、書き換えルールは .htaccess や Apache にはありません。完全にPHPで静的URLを実現するとなると、個人的には無理な気がします。
?
?
出典: http://blog.51yip.com/php/1219.html
?
?
?
?
?
?
?
?
?
?
?
?
?

aphpDependencyInjectionContaineriSATOULTAINATINAGECLASSDEPTINCIES、強化測定性、テスト可能性、および維持可能性。

SELECT DEPENTENCINGINOFCENT(DI)大規模なアプリケーションの場合、ServicElocatorは小さなプロジェクトまたはプロトタイプに適しています。 1)DIは、コンストラクターインジェクションを通じてコードのテスト可能性とモジュール性を改善します。 2)ServiceLocatorは、センター登録を通じてサービスを取得します。これは便利ですが、コードカップリングの増加につながる可能性があります。

phpapplicationscanbeoptimizedforspeedandEfficiencyby:1)enabingopcacheinphp.ini、2)PreparedStatementswithpordatabasequeriesを使用して、3)LoopswithArray_filterandarray_mapfordataprocessing、4)の構成ngincasaSearverseproxy、5)

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl

tomakephpapplicationsfaster、followthesesteps:1)useopcodecachinglikeopcacheTostoredscriptbytecode.2)最小化abasequeriesecachingingindexing.3)leveragephp7機能forbettercodeefficiency.4)

依存性注入(DI)は、明示的に推移的な依存関係によりPHPコードのテスト可能性を大幅に改善します。 1)DI分離クラスと特定の実装により、テストとメンテナンスが柔軟になります。 2)3つのタイプのうち、コンストラクターは、状態を一貫性に保つために明示的な式依存性を注入します。 3)DIコンテナを使用して複雑な依存関係を管理し、コードの品質と開発効率を向上させます。

DatabaseQueryoptimizationInpholvesseveralstrategESTOEnhancePerformance.1)selectonlynlynlyndorycolumnStoredatedataTransfer.2)useindexingtospeedupdataretrieval.3)revenmecrycachingtostoreres sultsoffrequent queries.4)


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

WebStorm Mac版
便利なJavaScript開発ツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
