調(diào)用過程

2018-06-13 15:54 更新

模板加載:


默認地,ModPHP 會通過模板入口文件(站點根目錄下的 index.php)來調(diào)用模板目錄中對應的文件。

但只有當訪問的路徑不是一個真實的文件或目錄時,ModPHP 才會這么做。

例如 http://localhost/something, ModPHP 的訪問順序是這樣的:

  1. 嘗試仿問站點根目錄下的 something 文件或文件夾;
  2. 嘗試訪問模板目錄下的 something 文件夾,如果存在這個文件夾,則嘗試訪問目錄下的索引文件,不存在則報告 403 錯誤;
  3. 嘗試訪問模板目錄下的 something 文件;
  4. 嘗試訪問模板目錄下的 something.php、something.html 等文件,后綴列表由 Template 引擎設置;
  5. 嘗試匹配偽靜態(tài)規(guī)則;
  6. 嘗試匹配模塊記錄的自定義鏈接;
  7. 沒有查詢到模板,報告 404 錯誤。

URL 請求:


可以通過 URL 攜帶參數(shù)訪問 mod.php 程序文件直接提交請求和獲取數(shù)據(jù),通常在 AJAX 中使用。

需要至少提供兩個參數(shù),{obj} 和 {act},用來調(diào)用相應的對象(類)和操作(方法),其他的參數(shù)將作為方法的參數(shù)。

ModPHP 會自動收集向后臺提交的數(shù)據(jù),執(zhí)行請求的操作并將結果(JSON)返回給客戶端。

默認支持四種提交請求的 URL 形式,以獲取 user_id = 1 的用戶為例:

  1. mod.php?obj=user&act=get&user_id=1[&更多參數(shù)]
  2. mod.php?user::get|user_id:1[|更多參數(shù)]
  3. mod.php?user::get|user_id=1[|更多參數(shù)]
  4. mod.php/user/get/user_id/1[/更多參數(shù)]

關于 jQuery 的小提示:

ModPHP 會在 URL 請求操作時設置請求頭 Content-Type: application/json,jQuery 會根據(jù)該請求頭自動解析返回到客戶端的 JSON 數(shù)據(jù)。因此你不必自己進行解析,直接使用即可。

關于跨域請求:

如果你需要進行跨域請求,請通過判斷 URL 地址等方式來決定僅對有限的鏈接開放跨域權限。使用發(fā)送請求頭 Access-Control-Allow-Origin: * 的方式開放跨域權限,而不是選用 jsonp 這些雞肋的方式。

Socket 請求:

Socket 請求的方式和 URL 請求類似,不同的只是無需訪問 mod.php 文件,并且使用 JSON 傳輸數(shù)據(jù)。

同樣需要兩個參數(shù),{obj} 和 {act},用來調(diào)用相應的對象(類)和操作(方法),其他的參數(shù)將作為方法的參數(shù)。

在處理流程和返回數(shù)據(jù)上,則和 URL 請求完全一致。

上述請求用戶的例子,如使用 WebSocket,也可以這么做:

  • WebSocket.send(JSON.stringify({obj: 'user', act: 'get', user_id: 1}));

或者又例如在 Python 中:

  • socket.sendall(b'{"obj":"user", "act":"get", "user_id":"1"}') 更詳細的說明請查看《啟用 Socket 服務器》。

外部調(diào)用:

外部程序要調(diào)用 ModPHP, 只需要引入 ModPHP 程序入口文件。比如下面這個例子:

<?php
require('mod.php'); //載入程序入口文件
echo curl('http://ip.cn'); //CURL 請求,將輸出服務器的當前 IP 地址及簡單信息

在命令行中使用:

請查看《在命令行中運行 ModPHP》。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號