『壹』 如何成為一個php方向的架構師
作為一名十年PHP老司機來講下,剛開始1-2年都是都是CODER,知道項目版本如何控制,用一些基本框架就可以完成項目。
工作三年PHP不僅僅是只完成碼農工作,還需要深入學習PHP優化,Swoole介面,微服務,Mysql底層優化等,才能擁有一份25K左右的薪資,讓自己有一些市場競爭力度!
等你有一定經驗,4-5年這個階段後,想要進階CTO、架構師的話,高並發分流,分布式緩存、RPC、API架構設計等技術都必將掌握!
如果你想要往架構師或TL的方向發展的話,那或許你可以看一下我分享給你的這份進階路線圖,主要針對1到5年及以上的PHP開發人員,裡面的技術包涵了PHP高並發、分布式、微服務、框架內核、高性能等技術!!還准備了一套中高級進階學習教程,分享tp,laravel,Swoole,swoft微服務等教程,想要進階的PHPer請戳網頁鏈接
PHP架構師體系
『貳』 什麼是PHP架構..求高手解答
這位朋友你好:
其實嚴謹點來說,PHP只能算是一種基於服務端的網站語言腳本,談不上什麼架構;
架構其實也是一種叫法,主要是針對C/S 和B/S來說的.
正常只要語言開發編寫規范(尤其是網站類語言腳本),資料庫結構合理,就根本不用考慮什麼架構,架構上的設計最多也就是針對整個網站功能及資料庫結構上的設計.
『叄』 php如何實現三層架構
這個問題。。。。叫人真的很難回答你。。。
三層架構要看你的理解了,每個人的理解的點都不一樣。
通俗的分為:mvc,邏輯,表示,控制
也有分為:,biz,view三層,分別是數據層 業務層 表現層
看你自己理解吧,國內有不少成熟的框架可以直接使用,比如thinkphp,國外也有不少,如ci等,樓主要想理解三層架構,還需要先去了解一下面向對象,這樣才能一個直觀的了解。
『肆』 php 架構和java架構的區別
PHP適合於快速開發,中小型應用系統,開發成本低,能夠對變動的需求作出快速的反應。而Java適合於開發大型的應用系統,應用的前景比較廣闊,系統易維護、可復用性較好。
通過對兩種語言寫的OA系統的比較,對這兩種語言的差異進行了一個全面的比較.
現在市場上的oa基本上可歸結為兩大陣營,即php陣營和java陣營。但對接觸oa不久的用戶來說,看到的往往只是它們的表相,只是明顯的價格差異,卻很難看出它們之間的實際差異。其實, PHP + MYSQL 不值錢不僅僅局限於oa軟體,而是整體上PHP + MYSQL開發的軟體都不如java開發的軟體值錢。為什麼PHP + MYSQL 的OA為什麼不值錢呢?首先得明白php和java之間的差異才行。
1、系統的技術架構比較
分層是將系統進行有效組織的方式,分而治之的思想是計算機領域中非常重要的思想。在好的分層思想引導下,便能實現「高內聚、低耦合」,也能將具體的問題割裂開來,易於控制、易於延展,更易於分配資源。PHP只能實現簡單的分布式兩層或三層的架構,而JAVA在這方面就十分強大,可以實現多層的網路架構。運用MVC的設計模式,可使oa系統具有更加高效、合理的系統架構。技術架構的落後,使運用php編寫的oa軟體系統先天不足,而後天又無法補足其先天上的劣勢。使得系統在可拓展性、需求應變性上與JAVA編寫的oa軟體系統的差距越來越大。架構的差距,註定了php做的oa充其量是個小家碧玉,始終無法和java這種大家閨秀同台競技。
2、資料庫訪問比較
PHP可編譯成具有與許多資料庫相連接的函數。將自己編寫外圍的函數去間接存取資料庫。通過這樣的途徑當更換使用的資料庫時,可以輕松地修改編碼以適應這樣的變化。但PHP提供的資料庫介面支持彼此不統一,比如對Oracle, MySQL,Sybase的介面,彼此都不一樣。由於PHP對於不同的資料庫採用不同的資料庫訪問介面,所以資料庫訪問代碼的通用性不強。
而Java通過JDBC來訪問資料庫,通過不同的資料庫廠商提供的資料庫驅動方便地訪問資料庫,訪問資料庫的介面比較統一。如果同樣是將開發的web應用從MYSQL數據數轉到ORACLE數據,PHP需要做大量的修改工作,而且比較繁瑣。但JAVA開發的便只需要很少的更改便能實現。
資料庫訪問方式的差異,奠定了php開發出的oa和java開發出來的oa是馬車和火車的差距,前者只能亦步亦趨而且額度有限,後者卻是工業化的結晶,不僅能夠包容萬物而且速度上穩步提升。
3、安全性對比
在同是開源和跨平台的java面前,php丟掉了很多的優勢。在代碼的安全性上尤為突出。php的開發程序在別人拿到代碼後,可以很容易的進行修改。而java開發的程序由於無法看到完整的源代碼,只能看到一些編譯好的類文件,所以安全性較高。加之系統架構的優勢,在安全性上php和java是相去甚遠。
如果非要將php和java在安全性上做個比較的話,同一個小偷光顧php那是隨便拿來隨便改,想拿什麼拿什麼,拿的高興還能大筆一輝某某到此一游。而光顧java的時候,便會發現警察把守,內設自動報警裝置,即便突破重重阻擾後進入居室。那值錢的東西都放在加密後的保險櫃中,只能望洋興嘆、鎩羽而歸。
4、前瞻性和拓展性
從整體來說,php適用於中小型系統,而java適用於大型系統。Php能夠將單一的事件做好,但卻不適合完成集成度較高的多項並發事件。為什麼說php適合中小型系統而不適合做大系統呢?
首先, php缺乏多層結構支持。而對於大型的系統負荷站點,只能採用分布計算。將資料庫、應用邏輯層和表示邏輯層彼此分開,並將同層的根據流量分開,組成二維數組。而php恰恰缺乏這種支持。
其次,PHP提供的資料庫介面不統一,要將多個不同的資料庫數據統一需要花費很大的力氣。而JAVA則沒有這種缺陷,可通過SUN Java的Java Class和EJB獲得規模支持,通過EJB/CORBA以及眾多廠商的Application Server獲得結構支持。如IBM的E-business,它的核心是採用JSP/Servlet的Web Sphere,是通過CGI來提供支持的。
如果將Php比作將才,具備獨擋一方的能力。那麼java便是帥才,具有較好的前瞻性和拓展性,整體布局和協同能力強。能夠指揮千軍萬馬,最後逐鹿中原。
5、開發成本比較
既然php在諸多方面都不如java優異,那麼php開發出的oa產品何以與java產品競爭呢?在於Php陣營普遍走的是低端路線,而java陣營走的是中高端路線。兩者之間交*的區域較小。
軟體價格的高低很大程度上和自身成本和功能相掛鉤。php的入門門檻較低,絕大多數學過c的程序員都很容易轉型為php程序員,這使得php程序員的泛濫成災的同時,低成本的php軟體產品也層出不窮。以PHP最經典的組合PHP + MySQL + Apache為例,由於所有軟體都是開源免費的,所以投入並不高。
而java開發需要特定的環境,成長為一個合格的java程序員需要一定的時間,java程序員的成本也是php成本的幾倍。Java的web應用伺服器免費的有Tomcat、JBoss等,而要想具有很好的商業化服務便必須選用Web Sphere和 Web logic。這其中投入的成本無形中便超是php成本的N倍。所以,java開發oa的成本要遠遠高於php開發出來的同類軟體產品。但也正由於java開發的成本較高,很難實現抄襲和短期內逾越的可能,也使得java用開發出的產品門檻更高。
『伍』 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開發框架
在回答你的問題前,你要弄明白什麼是OOP編程。簡單的說就是面向對象編程。
那麼有對象就必須有類。
那好,一個面向對象編程的網站標准程序都會有一個或多個類庫(自寫)或框架。其實框架就是集成類庫,裡面有很多很好用的方法供你使用,而且大多是開源的。
如果你不這樣寫,你的程序會亂得一塌糊塗。
需要程序多少看你編寫的程序好壞了,一個好的程序會用極短的少量代碼就能完成工作;而不太好的則寫了很多程序代碼去完成一個內置函數就能完成的工作。
一般中小型的網站如果要用框架的話,用些輕量型的框架,比如thinkPHP等。
如果是大型的網站,如網上商城等建議用 ZendFramework 等。
如果不會框架也可以做開發的,當然如果有框架的存在,你則必須明白框架中的方法都是做什麼用的,怎麼調用等等。
技術知識,這個問題比較難回答。首先你要知道你的網站是做什麼用的。
我列舉些周邊應會的知識吧
HTML 這個一看就知道,沒了它就沒有網頁。
CSS 不需要你去會寫,知道ID CLASS 是干什麼用的就好了。
MYSQL PHP + MYSQL 是公認的黃金搭檔,想學精通PHP你就必須會SQL。包括SQL語句熟練准確使用等。
javascript 你要知道,網頁中的有些特殊效果是靠它寫出來的,PHP雖然強大,但那是在程序上,在頁面上就顯得蒼白無力了。要熟練地使用它。
當然最後要說,你要會配置PHP的環境,如在linux或windows下如何正確配置Apache + php + mysql 。如果環境配置不對,就更談不上開發了。
『柒』 php 系統架構
網上收索的,共享給你:
《Beautiful Architecture》?
《Beautiful Code》的姐妹作,裡面有三成的架構是自己感興趣的,已經有國內出版社拿下了,架構師的唐詩三百首------O'reilly新書Beautiful Architecture(InfoQ)?。
《97 Things Every Software Architect Should Know 》?
一個開放的wiki?,O'Reilly 將它發布成書,不知道有沒人在翻,架構公理的書(InfoQ)?。
《Pattern-Oriented Software Architecture, Volume 4 - A Pattern Language forDistributed Computing》?
架構模式的集大成者,號稱有人在翻但等了一年中文版還是沒翻出來啊,面向模式軟體架構第4、5卷出版(InfoQ)?。
架構技術類
雲計算已經開始代替SOA成為新一代Buz Word,回顧一下整個SOA出版風潮,自己覺得值得一讀不忽悠的居然只有一本《SOA in Practic - SOA實踐指南-分布式系統設計的藝術》?。
在熱潮徹底退卻前,SOA的書還在繼續出著,OSGI與SCA的書也開始出現:
《SOA Design Patterns》?
又是Thomas Erl的書,很奇怪的連電子版都找不到,SOA設計模式出版啦(InfoQ)?。
還 沒出版的呀一大堆 --《SOA Patterns》、《ESB Architecture for SOA》、《SOA with Java》、《Open Source SOA》、《OSGi in Action》、《SpringSource dm Server in Action》、《Molar Java: Creating Flexible Applications with OSGi and Spring》、《Understanding SCA》、《Apache Tuscany in Action》...
編程匠師類
立志做一個匠師的人今年比較幸福,可以看的書很多:
《Beautiful Code - 代碼之美》 ?
很有經典潛質的一本,去年沒有讀完今年繼續,《代碼之美》的精選版(InfoQ)?。
《Protive Programmer - 卓有成效的程序員》?
Thoughtworks中國翻譯的,看了下樣章,熊節(透明)的翻譯依然是這么好, 《卓有成效的程序員》推薦序:做一個懶人(InfoQ)?。
《Clean Code: A Handbook of Agile Software Craftsmanship》?
Rober。C大叔的書,不知道誰在翻,應該很容易翻啊,到後面大段大段都是代碼。
《Effective Java中文版(第2版)》
Web系統架構及開發推薦書籍:
一、《Linux企業集群—用商用硬體和免費軟體構件高可用集群》
深入分析了LVS, HeartBeat等,是構建Linux集群不可多得的資料。
二、《構建高性能Web站點》
重點介紹如何構建一個高性能的Web系統,國內為數不多的值得一讀的技術書籍。
三、《大規模Web服務開發技術》
對大型網站涉及到的技術及相關知識點做了介紹。
四、《構建可擴展的Web站點》
Flicker的經驗之談,重點講述如何構建一個可擴展的Web系統。
五、《Web容量規劃的技術》
Flicker的經驗之談,重點講述如何進行容量規劃。
六、Scalability Rules: 50 Principles for Scaling Web Sites
主要講述如何開發易擴展的系統。
七、《分布式資料庫系統及其應用》(第二版)
中
科院研究生教材,很有料!大型網站的資料庫通常是分布式的,如何設計分布式資料庫系統?如何優化分布式查詢?本書都作了比較專業的解答。另外,
《MongoDB權威指南》、《Cassandra權威指南》對了解NoSQL的同學來說,也非常值得一讀。選擇合適的數據存儲工具是架構師經常面對的問
題。
php架構:
《企業應用架構模式》
《軟體架構的藝術》
《J2EE核心模式》
四人幫《設計模式》——推薦其他衍生書籍。
《架構實戰—軟體架構設計的過程》英文版最好,中文翻譯的太差。
《J2EE反模式》
《POSA》的5本(《面向模式的軟體架構》系列)
《架構之美》
《模型驅動設計》
『捌』 php都有哪些框架
1. Yii
Yii是一個基於組件的高性能的PHP的框架,用於開發大規模Web應用。Yii採用嚴格的OOP編寫,並有著完善的庫引用以及全面的教程。從MVC,DAO/ActiveRecord,widgets,caching,等級式RBAC,Web服務,到主體化,I18N和L10N,Yii提供了今日Web 2.0應用開發所需要的幾乎一切功能。而且這個框架的價格也並不太高。事實上,Yii是最有效率的PHP框架之一。
2. CodeIgniter
CodeIgniter是一個應用開發框架——一個為建立PHP網站的人們所設計的工具包。其目標在於快速的開發項目:它提供了豐富的庫組以完成常見的任務,以及簡單的界面,富有條理性的架構來訪問這些庫。使用CodeIgniter開發可以往項目中注入更多的創造力,因為它節省了大量編碼的時間。
3. CakePHP
CakePHP是一個快速開發PHP的框架,其中使用了一些常見的設計模式如ActiveRecord,Association Data Mapping,Front Controller以及MVC。其主要目標在於提供一個令任意水平的PHP開發人員都能夠快速開發web應用的框架,而且這個快速的實現並沒有犧牲項目的彈性。
4. PHPDevShell
PHPDevShell是一個開源(GNU/LGPL)的快速應用開發框架,用於開發不含Javascript的純PHP。它有一個完整的GUI管理員後台界面。其主要目標在於開發插件一類的基於管理的應用,其中速度、安全、穩定性及彈性是最優先考慮的重點。其設計形成了一個簡單的學習曲線,PHP開發者無需學習復雜的新術語。PHPDevShell的到來滿足了開發者們對於一個輕量級但是功能完善,可以無限制的進行配置的GUI的需求。
『玖』 PHP中的各種框架
CodeIgniter、CakePHP、ZendFramework、Symfony這幾個是國外的,你可以參考下http://www.isstudy.com
CodeIgniter
優點:
1. 配置簡單,全部的配置使用PHP腳本來配置,執行效率高;具有基本的路由功能,能夠進行一定程度的路由;具有初步的Layout功能,能夠製作一定程度的界面外觀;資料庫層封裝的不錯,具有基本的MVC功能
2. 快速簡潔,代碼不多,執行性能高,框架簡單,容易上手,學習成本低,文檔詳細;自帶了很多簡單好用的library,框架適合小型應用
缺點:
1. 把Model層簡單的理解為資料庫操作
2. 框架略顯簡單,只能夠滿足小型應用,略微不太能夠滿足中型應用需要
評價:
總體來說,拿CodeIgniter來完成簡單快速的應用還是值得,同時能夠構造一定程度的layout,便於模板的復用,數據操作層來說封裝的不錯,並且CodeIgniter沒有使用很多太復雜的設計模式,執行性能和代碼可讀性上都不錯。至於附加的 library 也還不錯,簡潔高效。
CakePHP
優點:
1. CakePHP是最類似於RoR的框架,包括設計方式,資料庫操作的Active Record方式;設計層面很優雅,沒有自帶多餘的 library,所有的功能都是純粹的框架,執行效率還不錯;資料庫層的 hasOne, hasMany 功能很強大,對於復雜業務處理比較合適;路由功能,配置功能還不錯;自動構建腳手架(scaffold)很強大;適合中型應用;基本實現過了MVC每一層;具有自動操作命令行腳本功能;
2. 文檔比較全,在國內推廣的比較成功,大部分都知道CakePHP,學習成本中等
缺點:
1. CakePHP非常嚴重的問題是把Model理解為資料庫層操作,嚴重影響了除了資料庫之外的操作能力
2. CakePHP的cache功能略顯薄弱,配置功能稍嫌弱;CakePHP不適合大型應用,只適合中型應用,小型應用來說略微的學習成本高了點
評價:
總體來說CakePHP框架代表了PHP框架很重要的一個時代和代表,並且目前發揮著很重要的作用,不少自己寫的框架都模仿了CakePHP的方式,是個里程碑式的產品;CakePHP透露著RoR的敏捷開發方式和把資料庫操作認為是唯一Model的設計思想,作為開發快速應用和原型是絕好的工具;同樣,用來做Web2.0網站的開發框架,也是值得選擇的。
【 Zend Framework 】
優點:
1. 官方出品,自帶了非常多的 library,框架本身使用了很多設計模式來編寫,架構上很優雅,執行效率中等;MVC設計中,比較簡潔,具有路由功能,配置文件比較強大(能夠處理 XML和php INI),各種 library 很強大,是所有PHP框架中各種功能最全面的,包括它不僅是一個框架,更是一個大類庫(取代PEAR),這是它的主要特色;能夠直觀的支持除資料庫操作之外的Model層(比 CodeIgniter 和 CakePHP 強),並且能夠很輕易的使用Loader功能載入其他新增加的Class;Cache功能很強大,從前端Cache到後端Cache都支持,後端 Cache支持Memcache、APC、SQLite、文件等等方式;資料庫操作功能很強大,支持各種驅動(適配器)
2. 文檔很全,在國內社區很成熟,並且目前不少Web 2.0網站在使用,學習成本中等
缺點:
1. MVC功能完成比較弱,View層簡單實現(跟沒實現一樣),無法很強大的控制前端頁面
2. 沒有自動化腳本,創建一個應用,包括入口文件,全部必須自己手工構建,入門成本高
3. Zend Framework 作為一個中型應用框架問題不大,也能夠勉強作為大型應用的框架,但是作為一個很成熟的大型PHP框架來說,還需要一些努力
評價:
作為官方出品的框架,Zend Framework的野心是可以預見的,想把其他框架擠走,同時封裝很多強大的類庫,能夠提供一站式的框架服務,並且他們的開發團隊很強大,完全足夠有能力開發很強大的產品出來,所以基本可以確定的是Zend Framework前途無量,如果花費更多的時間去完善框架。同樣的,Zend Framework架構本身也是比較優雅的,說明Zend官方是有很多高手的,設計理念上比較先進,雖然有一些功能實現的不夠完善,比如View層,自動化腳本等等,這些都有賴於未來的升級。總體來說Zend Framework是最值得期待的框架,當然,你目前要投入你的項目中使用也是完全沒問題的。
【 Symfony 】
優點:
1. Symfony 是我了解的PHP框架中功能最強大的,而且我使用時間比較長,但是很多功能還是沒有挖掘出來;它完整實現了MVC三層,封裝了所有東西,包括 $_POST,$_GET 數據,異常處理,調試功能,數據檢測;包含強大的緩存功能,自動載入Class(這個功能很爽),強大的i18n國家化支持;具有很強大的view層操作,能夠零碎的包含單個多個文件;非常強大的配置功能,使用yml配置能夠控制所有框架和程序運行行為,強大到讓人無語;能夠很隨意的定義各種自己的 class,並且symfony能夠自動載入(auto load)這些class,能夠在程序中隨意調用;包含強大的多層級項目和應用管理:Project --> Application --> Mole --> Action,能夠滿足一個項目下多個應用的需要,並且每層可以定義自己的類庫,配置文件,layout;非常強大的命令行操作功能,包括建立項目、建立應用、建立模塊、刷新緩存等等;
2. Symfony絕對是開發大型復雜項目的首選,因為使用了Symfony,將大大節約開發成本,並且多人協作的時候,不會出現問題,在Project級別定義好基礎Class以後,任何模塊都能夠重用,大大復用代碼
缺點:
1. 資料庫操作model採用了重量級的propel和creole,不過在我測試的版本中已經把他們移到了addon里,可用可不用
2. 緩存功能無法控制,每次開發調試總是緩存,需要執行 symfony cc, symfony rc 來清除和重建緩存;
3. 效率不是很高,特別是解析模板和讀取配置文件的過程,花費時間不少;
4. 學習成本很高,並且國內沒有成熟的社區和文檔,連中文手冊都沒有,相應的要掌握所有功能,需要花費比較多的時間
評價:
Symfony絕對是企業級的框架,唯一能夠貌似能夠跟Java領域哪些強悍框架抗衡的東西;強悍的東西,自然學習復雜,但是相應的對項目開發也比較有幫助,自然是推薦復雜的項目使用Symfony來處理,覺得是值得,後期的維護成本比較低,復用性很強。相應的如果使用Symfony的應該都是比較復雜的互聯網項目,那麼相應的就要考慮關於資料庫分布的問題,那麼就需要拋棄Symfony自帶的資料庫操作層,需要自己定義,當然了,Symfony支持隨意的構造model層。
【 總評 】
以上數款框架,各有特色,而且都是開源項目,不過框架針對的項目不一樣,一般來說 CodeIngiter 比較適合小型項目,CakePHP 和 Zend Framework 比較適合中型項目,Symfony 比較適合大型重量級項目,在項目選型的時候,要充分考慮框架的可以定製性、擴展性,因為每個項目都無法確定你是否會隨著需求的變化進行改變。
相對來說,Zend Framework 和 Symfony 應對變化的能力比較強,特別是能夠隨意定製 model 層的Class,能夠非常方便增加自己業務或者數據處理類,我是個人比較推薦在中大型項目中使用的框架。CodeIngiter 和 CakePHP 在中小型項目中同樣能夠發揮重大作用,快速開發和原型構建,非常適合目標不清晰的原型項目的開發。了解一個框架最好的方式就是使用它,學習它最好的方式就是看視頻。
仁者見仁,智者見智,在項目挑選框架的時候,請先認真考察項目的需求和未來的變化,然後選擇合適的框架,讓項目開發速度和後期維護性得到一個合理的平衡,當然了,也許,自己寫一個框架更適合。
『拾』 php三層架構
view
//數據層
//業務層
都應該是URL訪問不到的,只能在view內調用