PHP常見(jiàn)的框架了解一二拨齐,僅閱讀驰贷。
1.框架是如何產(chǎn)生的盛嘿?
不管是前端還是后端,在項(xiàng)目開(kāi)發(fā)中饱苟,一些架構(gòu)和代碼都是重復(fù)的孩擂,為了避免這種累死人的重復(fù)勞動(dòng)狼渊,于是各種各樣的框架就應(yīng)運(yùn)而生了箱熬。
在任何(PHP)開(kāi)發(fā)中类垦,選擇合適的框架有助于加快軟件開(kāi)發(fā),可以節(jié)約寶貴的項(xiàng)目時(shí)間城须,讓開(kāi)發(fā)者專注于功能的實(shí)現(xiàn)上蚤认。由于流行的框架經(jīng)過(guò)了大量項(xiàng)目的檢驗(yàn),所以使用框架還有助于創(chuàng)建更加穩(wěn)定和安全的應(yīng)用程序糕伐。
2.我們常見(jiàn)的熟知的幾種框架有哪些砰琢?
Laravel框架
Laravel是一個(gè)簡(jiǎn)單優(yōu)雅的PHPWeb開(kāi)發(fā)框架,可以將開(kāi)發(fā)者從意大利面條式的代碼中解放出來(lái)良瞧,通過(guò)簡(jiǎn)單陪汽、高雅、表達(dá)式語(yǔ)法開(kāi)發(fā)出很棒的Web應(yīng)用褥蚯,Laravel擁有更富有表現(xiàn)力的語(yǔ)法挚冤、高質(zhì)量的文檔、豐富的擴(kuò)展包赞庶,被稱為“巨匠級(jí)PHP開(kāi)發(fā)框架”训挡,所以也是目前使用人數(shù)最多,人群最大的框架(一般用于路由)歧强。
ThinkPHP框架
ThinkPHP是為了簡(jiǎn)化企業(yè)級(jí)應(yīng)用開(kāi)發(fā)和敏捷WEB應(yīng)用開(kāi)發(fā)而誕生的澜薄。最早誕生于2006年初,2007年元旦正式更名為ThinkPHP摊册,并且遵循Apache2開(kāi)源協(xié)議發(fā)布肤京。ThinkPHP從誕生以來(lái)一直秉承簡(jiǎn)潔實(shí)用的設(shè)計(jì)原則,在保持出色的性能和至簡(jiǎn)的代碼的同時(shí)茅特,也注重易用性蟆沫。并且擁有眾多原創(chuàng)功能和特性,在社區(qū)團(tuán)隊(duì)的積極參與下温治,在易用性饭庞、擴(kuò)展性和性能方面不斷優(yōu)化和改進(jìn)。ThinkPHP是一個(gè)快速熬荆、兼容而且簡(jiǎn)單的輕量級(jí)國(guó)產(chǎn)PHP開(kāi)發(fā)框架舟山,從Struts結(jié)構(gòu)移植過(guò)來(lái)并做了改進(jìn)和完善,同時(shí)也借鑒了國(guó)外很多優(yōu)秀的框架和模式卤恳,使用面向?qū)ο蟮拈_(kāi)發(fā)結(jié)構(gòu)和MVC模式累盗,融合了Struts的思想和TagLib(標(biāo)簽庫(kù))、RoR的ORM映射和ActiveRecord模式突琳。
三種開(kāi)發(fā)環(huán)境需知
1.WAMP集成開(kāi)發(fā)環(huán)境
windows環(huán)境下(操作系統(tǒng))若债、Apache網(wǎng)絡(luò)服務(wù)器(web)惑朦、MySQL數(shù)據(jù)庫(kù)劲装、PHP動(dòng)態(tài)腳本語(yǔ)言淘太。其中以AppServ和phpStudy網(wǎng)頁(yè)架站工具組合包最合適新手入門疑苔,跳過(guò)了繁瑣的環(huán)境搭建工作。
2.LAMP集成開(kāi)發(fā)環(huán)境
LAMP是基于Linux操作系統(tǒng)傲须,Apache網(wǎng)絡(luò)服務(wù)器蓝牲,MySQL數(shù)據(jù)庫(kù)和PHP動(dòng)態(tài)腳本語(yǔ)言
3.LNMP集成開(kāi)發(fā)環(huán)境
Linux操作系統(tǒng)、nginx服務(wù)器泰讽、MySQL數(shù)據(jù)庫(kù)和PHP動(dòng)態(tài)腳本語(yǔ)言
區(qū)別:apahce適合運(yùn)行在windows操作系統(tǒng)下例衍,nginx(也是web服務(wù)器),只不過(guò)他適合運(yùn)行在linux操作系統(tǒng)已卸。
API接口了解一下
淺談:
在以前的傳統(tǒng)開(kāi)發(fā)中佛玄,也就是前后端未分離之前的時(shí)代,基本是一套代碼一個(gè)模板渲染累澡,不太可靠翎嫡。
隨著移動(dòng)端和各種平臺(tái)小程序的興起到來(lái),就像uni-app框架一樣永乌,一套代碼惑申,支持所有的平臺(tái)訪問(wèn)(無(wú)論你是百度小程序、微信小程序翅雏、H5app還是其他的小程序圈驼,都只是用一套php接口就夠了,因?yàn)樗m用任何平臺(tái)開(kāi)發(fā)望几、真正實(shí)現(xiàn)了前后端的分離開(kāi)發(fā))
1.什么是API接口绩脆?
App = Application 是應(yīng)用程序,是向讓用戶呈現(xiàn)使用的界面。
API = Application program interface 是應(yīng)用程序編程接口橄抹,是用別的程序通過(guò)這個(gè)接口來(lái)調(diào)用相關(guān)數(shù)據(jù)的靴迫。(有時(shí)候還會(huì)叫成app接口)
2.API其工作原理又是什么?作用是什么楼誓?
原理:客戶端向服務(wù)器發(fā)送url請(qǐng)求(通過(guò)http協(xié)議進(jìn)行通訊)玉锌,去拿數(shù)據(jù),服務(wù)器響應(yīng)客戶端的請(qǐng)求(這一過(guò)程還會(huì)訪問(wèn)數(shù)據(jù)庫(kù))疟羹。將數(shù)據(jù)發(fā)回給客戶端主守,客戶端通過(guò)解析處理數(shù)據(jù),然后渲染到界面上榄融。
作用:API接口其實(shí)就是客戶端和服務(wù)端的一種數(shù)據(jù)通訊與交互参淫。
3.API可以做什么?
通過(guò)大數(shù)據(jù)算法愧杯,可以做到千人千面向用戶推送不一樣的數(shù)據(jù)涎才,商城類app就是一個(gè)例子,會(huì)根據(jù)個(gè)人喜好推送商品力九。
客戶端是如何向服務(wù)端發(fā)送數(shù)據(jù)的耍铜?服務(wù)端又是如何接收客戶端發(fā)過(guò)來(lái)的數(shù)據(jù)呢邑闺?
大部分API接口是通過(guò)HTTP協(xié)議進(jìn)行通訊的。
HTTP通訊的三要素业扒,滿足才可以通訊检吆。
實(shí)際情況:
app接口輸入舒萎,客戶端如何向服務(wù)端傳遞參數(shù)程储?
第一種模式,URL參數(shù)傳遞(常見(jiàn)的get請(qǐng)求)
URL參數(shù)傳遞臂寝,即把參數(shù)拼裝在url后面章鲤,url?后面就是我們的拼接參數(shù),&是連接多個(gè)參數(shù)。
例子:
第二種模式:Request Body
將請(qǐng)求的內(nèi)容放到請(qǐng)求體里面咆贬。一般也就是form表單提交這一類的內(nèi)容,說(shuō)到form表單提交就會(huì)聯(lián)想到POST請(qǐng)求败徊。form表單通過(guò)post請(qǐng)求,請(qǐng)求的格式類型是from-urlencoded,請(qǐng)求的資源會(huì)呈現(xiàn)Form Data的字樣掏缎。
1.form-urlencoded請(qǐng)求方式:
2.POST請(qǐng)求的另一種編碼格式方式是form-data,用于分割多個(gè)不同的請(qǐng)求參數(shù)皱蹦。
第三種模式:post-json提交json字符串
post-json它提交的是json字符串,是H5和API常見(jiàn)的方式,它和提交url和form表單的那種方式不一樣眷蜈。它是提交給服務(wù)器進(jìn)行解析的json數(shù)據(jù)沪哺。
總結(jié):上面三種模式都是客戶端傳遞參數(shù)給服務(wù)端。而服務(wù)端(也就是php)要怎么去使用客戶端傳遞過(guò)來(lái)的參數(shù)呢酌儒?如何將客戶端的傳遞過(guò)來(lái)的參數(shù)變成php的變量使用辜妓?
服務(wù)端(php)如何獲取接收客戶端傳遞過(guò)來(lái)的參數(shù)?
通過(guò)預(yù)定義變量$_POST['']獲取post請(qǐng)求
通過(guò)預(yù)定義變量$_GET['']獲取get請(qǐng)求
通過(guò)php的input流的file_get_contents()方法讀取原始json數(shù)據(jù)
通過(guò)json_decode()解析json字符串
案例代碼發(fā)送POST請(qǐng)求:index.html用于提交表單元素
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form action="test.php" method="post">
用戶:<input type="text" name="userName" value="qinfubin"/>
密碼:<input type="password" name="password" value="123456"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
php代碼:
<?
$user = $_POST['userName'];
$passwd = $_POST['password'];
var_dump($user,$passwd);
?>
Network查看信息:
服務(wù)端響應(yīng)回來(lái)的信息:
前端和后端的數(shù)據(jù)交互傳輸格式
傳統(tǒng)的是xml,一種類似h5的文本標(biāo)記語(yǔ)言,不過(guò)現(xiàn)在主流api接口都使用json對(duì)象的傳輸格式忌怎,json是一種輕量級(jí)籍滴、友好的數(shù)據(jù)交互格式,作為一種數(shù)據(jù)交換輸出的標(biāo)準(zhǔn)格式榴啸。