摘要:我的學習路線入門入門沒啥好說的,會基本編碼,基本的開發結構通常指,呵呵噠,類與對象,就差不多了,可以說是入門了。在這些已有基礎,我們需要學習并且還需要學會各種推陳出新,這樣才可以讓自己讓他人走得更遠。
我的 PHP 學習路線 1. PHP 入門
PHP 入門沒啥好說的,會基本編碼,基本的開發結構(通常指MVC,呵呵噠),類與對象,就差不多了,可以說是入門了。
1.1 OOP寫 PHP 最多目前無非就是 OOP,面向對象,說時遲那時快。不開玩笑地說,與我共事的某些前輩是連 OOP 都搞不清的,這里我就不多說了。
其實不是說一定要會,要去理解 OOP,只是如果你理解這個玩意,對于你后面的工作已經學習會非常的有好處。
其實面向對象也沒有那么復雜,只要理解一點,單一職責,其實就是一個對象越簡單越好。
也就是說,是自己該做就由自己做,不該由自己做的就不要自己做。
1.2 MVC老梗了,所謂 MVC 很多人會說 Model, View, Controller, 其實這樣說沒錯的,只是這樣說不會讓你更好地理解結構以及擴展性。
MVC 我當前的理解是:調用(度),也很簡單,其他框架也差不多這個原理,當然每個框架的實現方式都不一樣。
基本流程:
+--------------+ +-----------+ +--------------+ +--------------+ | | ----+ request +----> | | ------------> | | | | +-----------+ | | | | | Request | | Route Match | | Handle | | | +-----------+ | | +----------+ | | | | <----+ Response +----- | | <-+ Response +-- | | +--------------+ +-----------+ +--------------+ +----------+ +--------------+
大致列了下最基礎的框架底層原理,實際上咱們開發中 90% 接觸的只是在 Handle 處的工作,至于 Request、 Match、 Route 等基礎的對象或者數據,框架早已經封裝好了,也無需過度糾結和頭疼這方面的事情,先要把業務功能處理好,并且容錯處理好即可。
簡單總結一句話:知其然而不知其所以然。
進階這個真是個頭疼的問題,啥叫進階,我的理解是,做一些之前沒有做過的(指本領域:PHP),例如:設計模式,SPL,緩存設計(Cache),研究框架,開發規范,單元測試,行為驅動開發,組件(包括自己著手開發的),Composer 等等的東西,都可以理解為進階。
框架推薦:
Symfony
Laravel
Yaf
PHP 開發規范(PSR):
PHP FIG
PHPUnit & TDD/BDD:
PHPUnit
PHP spec
設計模式:
設計模式
SPL:
PHP SPL
Composer:
Composer
歡迎補充
2.1 設計模式設計模式,一個在軟件設計中占有重要角色的課程,而我們又不得不去了解。而對于設計模式來說,很多人是抗拒的,因為他和普通的開發者有著不一樣的思維方式,一個很明顯的提升就是: 設計,而設計應該是根據發展的變化而變化,業務的變化而變化,模式也一樣,不會是永恒不變的。唯一不變的是,基礎,這些技巧與思維少不了的是需要良好的基礎。
所以說,基礎是多么重要的,任何一切的一切都是建立與基礎之上,這叫積累。如同蓋樓。
在這些已有基礎,我們需要學習并且還需要學會各種推陳出新,這樣才可以讓自己讓他人走得更遠。
設計模式學習推薦: 設計模式
2.2 資源節省當今互聯網,每秒鐘都是錢,能節省的,絕對不能浪費,而且節省還可以一定地提高服務的質量。
一般我們說的資源是:
內存
帶寬
磁盤
CPU
而這些之間其實是有一定的關聯的,和代碼質量和容錯機制也有一定關系。
上述每一個都很重要,決定著你的服務質量。
能少占用內存就少占用內存,圖片、媒體資源能壓縮就壓縮,減少無用的存儲,降低代碼的復雜度。
2.3 容錯比較常見的是: file_get_contents,connection,有時候我們會很自然地遺忘這里其實會有一定幾率出現超時,最嚴重的就是造成服務無響應,如下代碼:
file_get_contents("https://www.google.com/");
這代碼分分鐘被打,活生生將程序毀了。
如果發生超時,會占用大量 CPU,嚴重可能會導致服務無響應,危害極大。
容錯是每個開發者在開發過程中必須要考慮的地方,沒有代碼沒有 “八阿哥”,總會有意外的地方,做好容錯可以最大程度地減少對用戶的傷害以及可以有效提高在出錯時的用戶體驗。百利而無一害。
2.4 日志日志,一個很容易被無視而又非常非常重要的環節,可以說,這一環節比你做的任何一個地方的業務代碼都要重要。
日志的好處:
記錄,跟蹤
調試
恢復
分析
調優
等等...
好處有好多,但在我們開發者當中,其日志最重要的功能之一就是,記錄問題,調試代碼,優化架構。
不得不說日志的重要性,請你好好重視這一個容易被忽略的環節。
而日志的設計需要考慮性能,不能因為日志而影響服務質量哦。所以在日的環節在完整性和效率上要做好權衡。
2.5 緩存設計緩存必須是針對業務情況而設計,不能生搬硬套。大公司的不一定適合你,開源方案也不一定不適合你,一定要找到自己合適的方案。
而在緩存設計方面,我個人推薦這一系列的文章: 緩存使用與設計
通俗簡單地說,緩存的目的是為了提高服務的響應速度以及質量,不能因為緩存的添加而導致服務異常。
2.6 原理理解 (這里說到框架的研究,說得不好的地方,請多多批評和教導)我們平時開發接觸不同的開發工具,操作,甚至是監控,那么他們其中的原理,你又理解么?
其實我們每天接觸的東西都有它的實現原理,算法等等的東西,但我們一直都在使用,并沒有很好地去理解他們當中的奧秘。時候有空去接觸一下了。
首先,開發,編碼我覺得就是將現實生活搬到互聯網中,我舉個例子:
為什么人訪問量上來了,咱們就要擴容,去擴展呢?原理很簡單,看看咱們超市里面的收銀臺就知道了。咱們超市里面所有收銀臺不是每天每個位置都有人的,根據人流(流量)動態擴容,而且有些收一臺的一個位置上設置有兩個人(多線程/多進程,看個人理解),這個設計挺妙的。當人一多,就會開多各個位置收銀臺,和增加人手。那他是怎么知道人多的呢?也很簡單,就是經理(Manager/Master進程或者是運維,看理解),他知道,內部調度安排人手。
大致舉了這么一個例子來說明擴展的原理。
回到正題: 框架
相信大家都有接觸過很多不同的框架,CI, TP, Symfony, Yii, Laravel, Slim等等,最深刻,最相似的地方在哪里呢?可能有些沒有,但是,有一點可以肯定的,就是,都是有一系列 Http 封裝,Route 處理。因為這兩是靈魂,剩下的是不是業務和結構。
剩下的就是考驗框架代碼質量的時候了,這里有一系列的框架,有的輕量,有的重量,有的靈活,有的高效。其實說到這里很多朋友都大概了解框架的運行原理。
我看過Symfony、Laravel、CI、Silex和ThinkPHP的代碼,當然很粗略地看看。里面實現的大部分代碼都是將各個處理模塊 “粘合” 一起,也就是 "Bridge"。
大致流程圖:
+----------+ +-------------+ +------------+ | | | | | | | Client |---------->| Application |--------------------->| Start | | | | | | | +----------+ +-------------+ +------------+ ^ | | | | v | +-------------+ +-------------+ | | | | | | | Container |------------>| Bootstrap |-----+ | | | | | | | +-------------+ +-------------+ | | ^ | +------------+ | +-------+--------+ | | | | | | +---->| Request | | +-----------+ +-----------+ | | | | | | | +------------+ | | Route | | Service | | | | | | | | +----------------+ +-----------+ +-----------+ +-------------+ | | | | | | | Response | | Dispatcher | | | |<----------------------------------------------| |<---------------+ | | | | +----------------+ +-------------+ ^ | +--------------+ | | | v | +----------+ | | | +--------|Controller| | | +----------+
當你了解了這些流程以及所需的組建,用先用的組件的話都是可以很方便地組合出自己想要的框架。
其實我這里希望更多的初學者多看看 ThinkPHP 的代碼,然后也看看其他開源框架的代碼,你會發現,除了 ThinkPHP 之外,你還可以發現更多新奇好玩的東西。
最終其實還是離不開自己動手開發一個。
具體框架開發系列我會找個時間與大家分享。框架的理解可謂到一段落,下次我會分享我對其他服務器的理解。
來到這個階段的,應該始終有一個意識:服務質量高于一切,就是不能因為添加服務而影響原有的服務
簡單總結一下。大量動手實踐自己的猜想,分析自己做過的項目并且優化自己覺得不足的地方。
總結: 知其然并且知其所以然。
3. PHP 高手模式我相信經過九九八十一難,能來到這個模式的人已經不多了。我自己還是菜鳥,不敢在這里胡說,這里會記錄我所有的 PHP 底層學習的經過,這里的故事,我想我等不到下一個故事了。
Unix 環境高級編程
tcp/ip 網絡編程
PHP 擴展開發
頸椎病康復指南
活著
3.1 Unix 環境高級編程為什么要理解并學習這一方面的知識?若果你是一名有追求的 PHP 開發者,最終還是應該將精力落入到 “系統” 處,因為真正處理 PHP 程序的,正正是 “系統”,如何可以讓自己的 PHP 做得更好,如何可以讓自己的服務做的更好,如何可以讓后端支持更加強大,靈活,高效,你就應該關注到底層系統的實現當中,但平時也不要忘了 PHP 的開發規范。
此處的文章和筆記,我將會在以后的 Unix 學習一系列當中給大家呈現。
3.2 tcp/ip 網絡編程在日常生活中,Http 已經離不開大家了,從平時打開應用,打開瀏覽器,搜索,都是需要使用 Http,應該沒有比這個接觸更多了吧。但是里面的奧秘你又知道多少?沒關系,和我一起探索 TCP/IP 的奧秘吧。
文章和筆記,以后會在 TCP/IP 章節中給大家呈現.
3.3 PHP 擴展開發學習擴展開發和學習 PHP 是一樣一樣的,根據 PHP 手冊上的流程...
語言參考
基本語法
類型
變量
常量
表達式
運算符
流程控制
函數
類與對象
命名空間
Errors
異常處理
生成器
引用的解釋
預定義變量
預定義異常
預定義接口
上下文(Context)選項和參數
支持的協議和封裝協議
看到這里應該要懂得舉一反三的了,后面的看你們的造化了......
此處的文章和筆記,我將會在以后的 PHP 擴展開發 學習一系列當中給大家呈現。
預告我目前已經開始做了: http://blog.fastdlabs.com/tag...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30289.html
摘要:在年我參加兄弟連的培訓,成為一名程序員。我認為成為程序員的有以下三種途徑。為大家準備了一份年程序員發展路線。可見也可以關注下上個時代框架霸主他的新版本可能會有奇跡發生擴展異步編程框架這個就不必多說了。 showImg(https://segmentfault.com/img/bVbmMdM?w=640&h=364); 我一生的文章都會放在這里,我的博客,我希望每一行代碼,每一段文字都能...
閱讀 629·2023-04-26 01:53
閱讀 2753·2021-11-17 17:00
閱讀 2888·2021-09-04 16:40
閱讀 1988·2021-09-02 15:41
閱讀 838·2019-08-26 11:34
閱讀 1227·2019-08-26 10:16
閱讀 1338·2019-08-23 17:51
閱讀 820·2019-08-23 16:50