php url伪静态化解析
1、大家来说说URL映射吧
?
?一般url映射有两种方式,一种是通过mod_rewrite实现,这种网上教材很多我也不多说了。另外一种是在程序中模拟,比如类似zend
Framework中的那种方式/index.php/controller/action/var1/value1/var2/value2/。这里方
式其实最主要是通过一个统一的输入接口,然后对url进行解析,最后转发到相应的controller中的module。
? ? 我这里写了两个简单函数来模拟。
? ? 第一个函数主要是进行地址解析,把类似/index.php/controller/action/var1/value1/var2/value2/的地址解析出来,一般来说要解析成三部分:controller,module,params。
<?php /** *对url路由进行简单的解析,支持对/path/to/site/index.php/module/action/parm/value * /path/to/site/index.php?/module/action/parm/value和 * /path/to/site/?/module/action/parm/value三种形式的处理 *@param:null *@return:router array */ function url_router() { $path = strip_tags ( $_SERVER ['REQUEST_URI'] ); $strpos = strpos ( $path, '.php' ); if ($strpos) { $path = substr ( $path, $strpos + 4 ); } else { if (empty ( $_SERVER ['QUERY_STRING'] )) { $strpos = strpos ( $path, '?' ); if ($strpos) { $path = substr ( $path, $strpos + 1 ); } else { $path = ''; } } else { $path = $_SERVER ['QUERY_STRING']; } } //统一化$path的格式,如果$path的第一个字符为/则去掉 if ($path [0] == '/') { $path = substr ( $path, 1 ); } //解析,并且路由 if (! empty ( $path )) { $path = explode ( '/', $path ); $router ['controller'] = $path [0]; $router ['action'] = (! empty ( $path [1] )) ? $path [1] : 'index'; //print_r($path); for($i = 2; $i < sizeof ( $path ); $i = $i + 2) { $params [$path [$i]] = (isset ( $path [$i + 1] )) ? $path [$i + 1] : ''; } $router ['params'] = $params; } else { //默认路由信息 $router ['controller'] = 'index'; $router ['action'] = 'index'; $router ['params'] = array (); } return $router; } ?>
这里就完成主要的url解析功能,然后是转发映射,下面这个函数实现(注意这个函数的实现是结合了我自己的架构,所以你采用的话需要相应的修改,当然你的MVC如果类似zend Framework,那应该要该的不多。)
<?php function url_dispatch($router, $app_path = '/app/controllers/') { require_once (SERVER_PATH . '/libs/controller.class.php'); $controller = $router ['controller'] . 'Controller'; //echo SERVER_PATH.$app_path.$controller.'.class.php'; if (! file_exists ( SERVER_PATH . $app_path . $controller . '.class.php' )) die ( '缺少必要的类!' ); require_once (SERVER_PATH . $app_path . $controller . '.class.php'); $controller = new $controller (); $controller->_setParam ( $router ['params'] ); $controller->{$router ['action'] . 'Action'} (); return true; } ?>

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP在現代化進程中仍然重要,因為它支持大量網站和應用,並通過框架適應開發需求。 1.PHP7提升了性能並引入了新功能。 2.現代框架如Laravel、Symfony和CodeIgniter簡化開發,提高代碼質量。 3.性能優化和最佳實踐進一步提升應用效率。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。

PHP中使用clone關鍵字創建對象副本,並通過\_\_clone魔法方法定制克隆行為。 1.使用clone關鍵字進行淺拷貝,克隆對象的屬性但不克隆對象屬性內的對象。 2.通過\_\_clone方法可以深拷貝嵌套對象,避免淺拷貝問題。 3.注意避免克隆中的循環引用和性能問題,優化克隆操作以提高效率。

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版