首頁  >  文章  >  後端開發  >  php一路走來

php一路走來

WBOY
WBOY原創
2016-08-08 09:20:19928瀏覽

        從2012年就已經接觸php了,一直到現在做了已經兩三年了,也走過無數的彎路,也通宵熬過無數次夜,看過各種各樣的PHP書籍,博客等,做一下總結,全當是對自己過去這段時間的總結。

        php是一個弱類型的語言,所謂若類型的語言並不是之沒有類型區分,而是說沒有明顯的類型定義,php的變數不需要提前定義,只需要一個$符號就可以了,如: $a/$b/$c。 php變數在底層的實作是用c中的共同體(Union)實現的,只是php變數會在操作的時候自動進行型別轉換,其次,php的變數採用的是「引用複製」和「寫時複製」的機制。

        php學到後期會有種不知道該怎麼學習的狀態,感覺功能的實現都可以實現,沒有什麼東西可以學習,確實php到後期本身沒有什麼好學的,此時可以嘗試學習一些設計模式,去看一些開源的程式碼,去嘗試著封裝一下MVC,嘗試著用原生態的PHP語言去實作一些框架中的封裝。看完這些之後,可以嘗試的去看一下php的源碼,也許你此時會發現php的源碼還是很難理解的,沒關係,一開始都是這樣,你可以在這之前去重新學習一下c語言和c++,此時也許你會發現從c到c++其實是一個封裝的過程,你也會發現,php源碼中用到了大量的結構體(struct),define,typedef,以及大量的一重二重三重指針,你會發現php不是沒有什麼可以學習,是需要更深層的挖掘,好了接下來的日子就有事情可以乾了,看看PHP的源碼,嘗試著實現一下php的擴展,放到自己的環境中調用一下。

        php後期並不是沒有什麼可以學習的,而是它本身語言就比較簡單,如果只是學習應用層面的東西那就真的沒有東西可以學習了。好了大致看完原始碼之後你會發現php之後會被解析成opcode然後才會被執行,你會知道apc的用法,memcache以及radius的/概念,你會對php有一層更加深入的了解,那下面咱們轉向優化方面。

        php是web開發語言,所以牽涉到web就要牽涉到最佳化,怎麼說優化呢?網站的瓶頸一般存在與兩個地方一個是資料庫的瓶頸,一個是php語言的瓶頸,資料庫方面:表結構的最佳化,mysql引擎的選擇,索引的添加,縱向分錶,橫向分錶,主從資料庫讀寫分類,集群。 php方面咱們可以從優化view層中的css 和 js說起,對css和js進行壓縮合併,圖片進行處理,圖示進行合併等操作。 controller層對sql語句進行最佳化,減少關聯查詢和子查詢的使用,可以把sql語句拆開執行,然後在拼合資料。採用頁面靜態化處理部分不常變動的頁面,採用memcache/apc/radius作為資料庫緩存,緩解資料庫壓力,並使用opcode功能減少php的解析(php5.5之後自備opcode捨去了apc,也可以透過apc實作),選擇速度更快的nginx取代apache服務,對伺服器做叢集等等。當然php本身寫法上也有優化技巧例如單引號與雙引號的使用,include 和 requice的使用等等,不再敘述。至此你需要學習的東西還有很多。

        當感覺學習一門弱型別語言沒有什麼提升的時候,也許你可以再去學習強類型語言,比如說學習java做jsp的時候你會發現jsp中並沒有你所理所當然的session,你可以選擇用map、hashmap等已有的資料結構來封裝session,你可能已經習慣了框架給你提供的功能,但是在這裡,你確實需要自己去封裝一個資料庫的連結讀取並把資料回傳到一個map中的方法以方便你的開發。

         當你感覺學習php沒有什麼提高的時候,也許你應該去學學linux,其實不需要去看多少書,換上一個linux系統,嘗試著去用它。你會發現linux其實要比windows更好用,你可以去搭配一套lnmp/lamp,嘗試去寫一點shell程式碼,去自動備份你的資料庫,甚至去論循你的php以實現某種功能,你也可以很方便的配置php的xdebug去嘗試用斷點調試php程序,也可以很方便的去寫一些php的擴展,配置memcache等等等等,你可以嘗試使用vim去寫一些東西,嘗試去使用gcc編譯c嘗試去使用gdb調試程序,嘗試去用命令列去乾更多的事情,你會發現php其實和linux才是絕配。

        這時候你已經可以熟練的去使用linux了,為什麼不嘗試自己去實現一個小小的框架,去分析一下常用框架中的技巧,php的面向對象,php的魔法函數,php如何實現多態性,以及php在apache中是怎麼運作的,nginx為什麼比apache效能高,如何在多台伺服器下去共享session,如何利用curl去呼叫一些介面實作開發過程中的某些場合的使用,如何去使用serialize /unserialize去實現一些資料的序列化儲存反序列話使用,如何去抓取一些網站的內容,以及如何去改進一些使用習慣。總之,你需要做的還很多,php並不是沒有什麼可以學的,而是不應該一直停留在程式碼階段,應該去學習更深入的東西,要相信當你感覺沒有什麼東西可以學習的時候有很大一部分是因為你的知識範圍還太小,認知層面還太淺。

        程式設計不容易,且行且珍惜,找工作也不容易,所以不管任何時候還是要努力提升自己。

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。

以上就介紹了php一路走來,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn