Ⅰ 為什麼說php是首選的Web開發語言
作者:2gua
鏈接:https://zhuanlan.hu.com/p/19904737
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
1. PHP是為Web而生的,天然與HTML、JavaScript有親近感,也就是原生味兒十足。即使是PHP與HTML代碼混雜,從某種角度而言,也能幫助初學者直觀地了解Web技術機理,壞事有時候也是好事。另一方面,開源PHP的C風格、Unix/Linux范兒讓其在Apache、Nginx等Web應用伺服器上表現優異。總之,PHP與Web是渾然天成的結合方式。
2. 要掌握PHP,我建議從備受詬病的「代碼凌亂」編程風格 -- 或許是從PHP與HTML混合編程開始,待直觀了解Web開發技術之後,再考慮代碼組織和結構的重構,這樣有助於自己以更加原生的方式掌握Web的秘密。那麼,什麼是更加原生的方式呢?隨手舉個例子:典型的404狀態碼。
用PHP的實現(404.php、404.html):
<?php
header("HTTP/1.1 404 Not Found");
include("404.html");
exit;
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
</head>
<body>
<p>404頁面。</p>
</body>
</html>
再看看如http://ASP.NET MVC中的實現:
public ActionResult Details(int id)
{
return HttpNotFound();
}
雖然封裝得很好,但是,跟PHP方式比較就知道,http://ASP.NET MVC中的實現確實比較抽象不夠直觀,而且是在控制器里直接定義和跳轉的。在PHP中,顯而易見,一下就明白了代碼中header的含義:HTTP-Version、Status-Code、Reason-Phrase。
順帶說說Rails中的處理方式,抽象程度也很高:
render :template => '......', :status => 404
3. 與PHP類似的還有JSP,但JSP往往需要與JEE其他技術模塊相配合使用,體系足夠龐大,需要有長期准備。其他如http://ASP.NET MVC、Rails等框架的抽象度較高,也不建議作為首選。
4. 不得不提Node.js,Node.js是目前很火的技術,號稱「全棧」的希望所在,常拿來跟PHP爭論比較:什麼並發、線程、進程等等。在這里無意評論孰優孰劣,但至少PHP可以讓你多掌握一門技術,而不止是JavaScript。此外,PHP的大型業務的成熟應用案例可是比比皆是吖。
5. 那麼,是不是該一直堅持指哪打哪的「代碼凌亂」方式呢?當然不應該。PHP提供的OOP特性足夠強大,在技能與理解程度達到一定高度時,完全可以以OOP的方式來組織代碼。在PHP領域,各種框架非常多,比如Laravel、CI、FuelPHP、Yii、Symfony、Zend Framework等等,屆時隨便選一個都可以進行規范化開發。「代碼凌亂」關鍵不在於工具本身,而在於人自己!要知道用Java也能寫出爛代碼。
6. PHP的資料非常豐富。
7. 最後,有一個稍稍題外話的看法,早前我還覺得在RESTful方式不斷普及下,由於RESTful Web Services使用標準的 HTTP 方法(GET/PUT/POST/DELETE)來抽象Web服務能力,服務端的重點將移至MC,而服務端視圖模版的應用會減少,客戶端的支撐需求會越來越多。比如各種前端庫、框架將得到快速推進,越來越多的需求處理會前置到前端來處理。但現在我感覺這種狀態考慮得太過理想了,就像數據頻繁大量更迭及處理的場景,更適合服務端(如模版引擎)完成;再具體地,又如大數據量的分頁,如果都在瀏覽器中實現,性能就一定會有很大問題。此外,頻繁Ajax調用、客戶端緩存機制的缺失,也將引起種種問題,再進一步來看,單頁面應用(SPA)也就並非適合每一個業務場景,服務端視圖模版還是有比較多的適用領域的。
Ⅱ php如何實現以個restful介面
你好!
把傳統的PHP Web介面改成符合RESTful風格的Web介面有什麼用處?
其實,這里最好用「好處」這個詞來代替「用處」,因為傳統的Web介面實現方式同樣能夠實現業務需要(所以這不是一個必須的事情,需要自己根據業務需求綜合判斷是否需要採用),而改用「RESTful風格」會有一些額外的「好處」:
統一的風格能夠讓各方更加便利的進行交互,也帶來了更好的兼容性(這是一個所有遵循一定規范所帶來的共通的好處,就像大家都說普通話,交流起來多方便啊)
對資源的操作正好對應相應的HTTP動作(GET、POST、PUT、DELETE),而這些動作正好可以滿足我們對資源狀態進行操作的需要,也就是說想對資源狀態進行什麼樣的操作就選擇什麼樣的動作,而這些動作又是HTTP協議本身提供的,多麼和諧自然啊(就是題主的摘錄內容)
請求所造成的影響明確,或者說副作用明確,比如GET肯定是安全的,PUT和DELETE肯定是冪等得,POST肯定是不安全的(這里的肯定是建立在API設計完全遵循「RESTful風格」基礎上的)
良好的符合「RESTful風格」的URI設計,可以讓Web介面的功能和整體結構更加清晰,僅僅通過URI就能方便的推測出來介面是做什麼的,以及多個資源之間關聯性
利用HTTP內容協商(content negotiation)實現資源的多重表述,比如請求方可以把自己需要的格式放到頭信息的Accept欄位中表述(如Accept: text/json),這樣同樣一個URI就可以輸出多種格式而不再需要在URI裡面特別加上一個type=json的參數了
客戶端、代理伺服器等可以根據HTTP協議規范進行相應的額外處理,比如Cache
希望能夠幫到你!
Ⅲ php有哪些框架
PHP的框架有很多,這里說一部分供大家參考:
國內框架:ThinkPHP, Canphp, KYPHP, InitPHP, SpeedPHP, CdvPHP,KPHP。
國外著名框架:Zend Framework,Codelgniter,CakePHP,Symfony,Yii,Seagull,Laravel。
小型框架:E,DuoLamPHP,Difeye,GalaxixPhp,PhpPeanuts,Rong Framework,Openbiz Framework。
Ⅳ php 哪個restful框架好用
Yii框架
Yii是一個基於組件、用於開發大型 Web 應用的 高性能 PHP 框架。Yii 幾乎擁有了 所有的特性 ,包括 MVC、DAO/ActiveRecord、I18N/L10N、caching、基於 JQuery 的 AJAX 支持、用戶認證和基於角色的訪問控制、腳手架、輸入驗證、部件、事件、主題化以及 Web 服務等等。Yii 採用嚴格的 OOP 編寫,Yii 使用簡單,非常靈活,具有很好的可擴展性。
yii中文社區:http://www.yiichina.com/
Ⅳ 新人剛接觸 PHP,哪種框架比較容易上手
題主如果是一個剛接觸PHP的新人的話,可能會覺得框架很多,各個框架都有各自的特點,難以掌握,其實雖然每個框架的特點不一樣,但是框架的思路都是差不多的,如果你用熟了,就會覺得什麼框架都差不多。不過剛開始接觸這些的話,了解框架還是要有先後順序的。
總之你要在框架中,學習如何去使用它,一開始往往會覺得很難,但是熟練了之後你會發現原來的框架實際上是相同的,框架可以隨心所欲的使用也不是什麼難事,只要你不放棄的堅持學習就可以做到。
Ⅵ php restful api怎麼用
Wax for iPhone這種框架在開發時,旨在把Lua腳本語言和原生Objective-C應用編程介面(API)結合起來。這意味著,你可以從Lua裡面,使用任何和全部的Objective-C類及框架。
從技術上來講,Wax結合了Objective-C類和原生C代碼。Lua語言嵌入了C語言,然後Objective-C類並入到其中。
為什麼使用Wax
Wax是免費的、開源的。與其他一些基於Lua的移動開發解決方案不同,Wax是個開源框架,只需要你花一點點時間就可以上手,不需要花錢。不喜歡Wax的工作方式,或者發現實施方面的缺陷源代碼可免費獲取,你總是可以改動源代碼,以滿足自己的需要。
可以利用原生API。這意味著,為教Objective-C而編寫的教程很容易由Lua for Wax來改動和編寫。這還意味著,你的應用程序在外觀感覺上總是如同原生應用程序,不過又得到了用Lua這種高效腳本語言編寫代碼可以節省時間的好處。
可以使用Xcode。這意味著,模擬器和設備部署都輕而易舉,不會輕易與未來的iOS版本決裂。
可以利用所有現有的Objective-C庫。如果你有一個Objective-C類是以前編寫的,不需要改動,就可以將它用在Lua中——只要把它放入到Xcode。Three20之類的庫也是一樣。只要按照正常指令來添加庫,就可以使用Lua代碼訪問它們。
可以利用Wax Lua模塊。Wax有幾個內置的Lua模塊,使得非同步HTTP請求和JavaScript對象標注(JSON)創建/解析極其容易而快速(因為模塊是用C編寫的)。
沒必要管理內存。不再需要操心內存分配之類的事務。Wax為你處理這一切。
Lua類型自動轉換成對應的Objective-C類型,反之亦然。 這意味著,如果你調用了需要NSString和NSInteger的某個方法,但傳送了Lua字元串和Lua整數,Wax會為你搞定轉換工作。這種轉換功能強大,甚至可以處理復雜的Objective-C特性,比如選擇器。這樣就行,我剛在後盾網問老師的,希望能幫到你。Ψ( ̄(エ) ̄)Ψ努力吧
Ⅶ 怎麼用PHP開發API供其他客戶端調用
一、介面的分類:
1、URL類型的介面
URL
路由帶參數式的介面!這個很好做!只要有過Web開發經驗的人都能完成!這種介面數據不夠隱蔽性,可以直接在瀏覽其中看到,如支付寶的交易請求URL。需
要加一個MD5簽名,和伺服器端的再次向支付寶伺服器發送驗證!雖然soap方式傳遞的數據隱蔽性很好!但為了數據安全,難免也需要進行數據簽名。
2、SOAP類型的介面
無關編程語言、無關平台、擴展性很好,要實現一個SOAP 型的介面,有兩種方式:一種有WSDL文件方式、一中無WSDL文件方式!
對
於熱愛研究型的人來說,使用第一種方式可以讓你清楚的了解PHP是怎麼創建了一個Web
Service!但第一種對於新手來說,創建一個XML格式的WSDL文件,是比較難的,這你的先了解熟悉什麼是XML!學會XML語法!但對於一個急於
解決問題的人來說!沒有這么多的時間去熟悉!所以這是件煩惱的事!
二、PHP環境設置
先配置下PHP的soap環境支持:
找到php.ini文件
;extension=php_soap.dll
刪除掉";" ,重啟apache伺服器
為了便於測試,需要關於wsdl緩存
方式1:
配置文件:php.ini 選項 soap.wsdl_cache_enabled 設置為0
方式2:
代碼頭添加:ini_set('soap.wsdl_cache_enabled', "0"); //關閉wsdl緩存
三、有WSDL文件方式創建
在
這里先介紹標準的webservice。 那麼如何創建wsdl呢?對於PHP來說這確實是件很不容易的事情,有人說用zend
studio創建很方便,這是一種方法。但對於那些不喜歡用zend studio的人來說,會覺得創建一個web service還要安裝zend
studio,太強人所難了。
在這里介紹一個簡單的方法,到網上下載SoapDiscovery.class.php類,裡面有個公用方法:getWSDL,這個方法末尾是用的 return,那麼,你修改一下這個方法:
//return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>');
//生成wsdl文件,將上面的return注釋
$fso = fopen($this->class_name . ".wsdl" , "w");
fwrite($fso,
sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL,
$serviceWSDL, $messageWSDL, '</definitions>'));
現在生成wsdl的類有了,SoapDiscovery.class.php(源碼在最末尾)。
再准備一個提供服務的Service.php類文件或者函數就可以創建wsdl了!
Ⅷ 如何使用PHP搭建一個restFul風格的API系統
單入口,常見使用index.php,一般設置全局常量和debug模式
2、統一路由格式,帶上版本號,並盡量採用映射的模式,比如:/v0/proct => /mole/controller/action
3、GET,POST,PUT,DELET,PATCH等常見的請求,採用$_POST,$_GET或者php://input的方式獲取傳來的數據。
你可以去後盾人平台看一下,裡面的東西不錯
Ⅸ PHP如何編寫RESTful介面的方法實例演示
就收參數
處理參數
返回json格式數據
Ⅹ php開發restful式api中,客戶端的登錄,驗證機制如何該設置
oauth的令牌機制還是很適合api的身份驗證的 實際上就是一種SESSION的變種
本身也沒多少難度 就是按照預先幾個平台約定的key ,請求端通過發送key加某個規則(比如平台id)加密後構成的簽名碼,發送到伺服器端,伺服器根據提供的身份參數查詢獲得預先約定好的key 再用key加規則(比如平台id)加密後確定無誤就算通過 :很像密碼驗證吧。
然後給對方返回一個無序的加密字元串,就是令牌啦。令牌要存在伺服器上,一般存資料庫里和平台請求的來源對應,設置有效期保存。
客戶端拿到這個令牌後就可以通過令牌訪問了,(和SESSION幾乎一模一樣)在伺服器上交互,只需要驗證令牌的正確性和有效期,就可以放行進行操作了。
大致如此,細節有很多變化,機制運作差不多就這個樣子。