php一路走來
從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教學有興趣的朋友有幫助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

在PHP8 中,match表達式是一種新的控制結構,用於根據表達式的值返回不同的結果。 1)它類似於switch語句,但返回值而非執行語句塊。 2)match表達式使用嚴格比較(===),提升了安全性。 3)它避免了switch語句中可能的break遺漏問題,增強了代碼的簡潔性和可讀性。

語言多線程可以大大提升程序效率,C 語言中多線程的實現方式主要有四種:創建獨立進程:創建多個獨立運行的進程,每個進程擁有自己的內存空間。偽多線程:在一個進程中創建多個執行流,這些執行流共享同一內存空間,並交替執行。多線程庫:使用pthreads等多線程庫創建和管理線程,提供了豐富的線程操作函數。協程:一種輕量級的多線程實現,將任務劃分成小的子任務,輪流執行。

要打開 web.xml 文件,可以使用以下方法:使用文本編輯器(如記事本或 TextEdit)使用集成開發環境(如 Eclipse 或 NetBeans)使用命令行編輯命令(Windows:notepad web.xml;Mac/Linux:open -a TextEdit web.xml)

在PHP中可以通過使用不可預測的令牌來有效防範CSRF攻擊。具體方法包括:1.生成並在表單中嵌入CSRF令牌;2.在處理請求時驗證令牌的有效性。

Linux最適合用作服務器管理、嵌入式系統和桌面環境。 1)在服務器管理中,Linux用於託管網站、數據庫和應用程序,提供穩定性和可靠性。 2)在嵌入式系統中,Linux因其靈活性和穩定性被廣泛應用於智能家居和汽車電子系統。 3)在桌面環境中,Linux提供了豐富的應用和高效的性能。
