調(diào)用過(guò)程

2018-06-13 15:54 更新

模板加載:


默認(rèn)地,ModPHP 會(huì)通過(guò)模板入口文件(站點(diǎn)根目錄下的 index.php)來(lái)調(diào)用模板目錄中對(duì)應(yīng)的文件。

但只有當(dāng)訪問(wèn)的路徑不是一個(gè)真實(shí)的文件或目錄時(shí),ModPHP 才會(huì)這么做。

例如 http://localhost/something, ModPHP 的訪問(wèn)順序是這樣的:

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

URL 請(qǐng)求:


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

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

ModPHP 會(huì)自動(dòng)收集向后臺(tái)提交的數(shù)據(jù),執(zhí)行請(qǐng)求的操作并將結(jié)果(JSON)返回給客戶端。

默認(rèn)支持四種提交請(qǐng)求的 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ù)]

關(guān)于 jQuery 的小提示:

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

關(guān)于跨域請(qǐng)求:

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

Socket 請(qǐng)求:

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

同樣需要兩個(gè)參數(shù),{obj} 和 {act},用來(lái)調(diào)用相應(yīng)的對(duì)象(類)和操作(方法),其他的參數(shù)將作為方法的參數(shù)。

在處理流程和返回?cái)?shù)據(jù)上,則和 URL 請(qǐng)求完全一致。

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

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

或者又例如在 Python 中:

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

外部調(diào)用:

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

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

在命令行中使用:

請(qǐng)查看《在命令行中運(yùn)行 ModPHP》。

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)