1,胡說八道
php設計專門用於web開發的編程語言,易學易用得到廣泛應用的同時也飽受詬病,簡單易學使得初學者用最短的時間很容易實現自己的WEB站點,且開源項目豐富,是中小型公司熱衷的選擇。但是,隨着站點流量的增加、更多功能需求的增加、邏輯復雜度增加,php會讓你陷入麻煩之中,php開發人員需要對php語言做深入的理解、對web站點的實踐做深入的理解,對設計和技巧的應用才能解決麻煩。php語言很特殊,既有設計之初的面相過程寫法,也有php4之后引入類之后的面相對象的寫法,語法糖,弱語言類型等一切為開發速度的提升服務。
2,獲取幫助渠道
手冊 、開源社區 、google
3,面向對象OOP
OOP是一種用於開發結構合理並可維護的編程方法,由於php經常看到面向過程的寫法,很多phper把OOP當作神秘的藝術。OOP最重要的可能就是代碼重用,相同的問題可以用同一段代碼解決。面向對象的代碼存儲庫也不斷的完善PEAR和PHP Classes,可以節省重復造輪子的時間,把更多精力放在業務邏輯等其他方面。php5對對象模型的完善和性能都得到顯著提高。
類的概念:事物的通用抽象,定義對象的屬性方法。
封裝和可見性:封裝是OOP的基本概念,概念是 一個類應該具有一個公共接口(屬性方法)和一個私有實現(內部實現機制),通過公共API能夠輸出結果,隱藏內部實現機制。通過類的屬性方法的可見性來實現公共接口和私有實現,public protected private,很多人喜歡把類都定義成public,避免考慮封裝帶來的問題。但是對於用戶必須了解如何使用這個類,用戶看了public的這些公共可見性的東西使用起來都是安全的,可能重寫這些公共的類,造成嚴重的問題!所以盡可能把屬性和方法的可見性縮小到最小滿足封裝的目標。
__construct 初始化對象的屬性, __destruct 消除對象的痕跡(關閉數據庫連接和文件句柄等),__ 包含的其他魔法函數使用起來很方便
繼承:面向對象基本概念,php實現對象的單繼承,繼承父類的所有public protected屬性和方法,子類能夠覆蓋繼承的屬性和方法,方法覆蓋時參數要一致(5.3 Strict Standards報錯,E_STRICT在php手冊定義為 PHP建議...,為了保證向前兼容性和操作性建議開啟),即使覆蓋了父類的方法任然能使用父類的方法(parent::, ::被稱作范圍解析雲算符),__constract要注意(子類覆蓋時候沒有java等其他面向對象語言的級聯構造函數,要手動實現父類的構造)
對象的組合聚合:對象除了繼承之外的另一種交互方式。
聚合可以理解為第二個對象通過方法的參數傳遞給第一個對象,這樣第一個對象就可以調用第二個對象的方法了,優點是 對象可以被多個對象共享使用,對象改變狀態可能導致其他對象無法使用
組合可以理解成第一個對象實例化第二個對象,完全擁有第二個對象,對象不能夠共享給其他對象,可讀性高,封裝性更好,但是兩個對象的耦合性更高重用困難
多態 :多個對象共享同一個接口,可以實現互換,即“一個對外接口,多個內部實現方法”,同一個操作作用於不同的類的實例,將產生不同的執行結果。也即不同類的對象收到相同的消息時,將得到不同的結果。 php接口(提供方法名稱,不提供方法體)。實際的應用開發中,采用面向對象中的多態主要在於可以將不同的子類對象都當作一個父類來處理,並且可以屏蔽不同子類對象之間所存在的差異,寫出通用的代碼,做出通用的編程,以適應需求的不斷變化。因為PHP本身就是一種弱類型的語言,不存在父類對象轉化為子類對象或者是子類對象轉化為父類對象的問題,所以多態的應用並不是那么的明顯
4,如何編寫可移植性代碼
並非所有php運行的環境都是一樣的。php版本 php.ini文件配置不同,腳本可能不能在另一服務器運行,所有應當采用普遍接受的最佳實踐配置,提高兼容性。
最佳實踐: 保持配置集中放置、編寫可重用行代碼、使用完整的php標記、使用全局超級變量
5,緩存
緩存是幾乎所有應用都在用的一種數據優化存儲方式,但是數據的實時性帶來的問題該怎么解決不使用緩存?
瀏覽器緩存:html的meta標簽和http頭可以阻止使用緩存
6,代碼管理 GIT
7,代碼部署 構建系統