第一篇:快速學(xué)習(xí)php
Php參考手冊介紹
html css 試題
試題1: 請編寫如下一個html頁面
試題2: 請使用(div+css)盒子經(jīng)典布局編寫如下界面
試題3: 請使用div+css 盒子布局模式編寫sohu首頁面布局
javascript試題
試題1:
請按下面內(nèi)容編寫一個頁面,點頁面里的“全選”時,能選中或清除上面的所有水果。選擇你喜歡的水果:
□蘋果
□桔子
□香蕉
□葡萄
□桃子
□全選/全不選
試題2: 編寫一個簡單顯示和隱藏效果如圖所示:
試題3:
請使用javascript相關(guān)函數(shù)對一個url【http://004km.cn
(2)PHP函數(shù)
PHP函數(shù)的基本介紹、如何自定義函數(shù)、PHP頁面調(diào)用函數(shù)、require()、require_once()、include()和include_once()的區(qū)別、從內(nèi)存分析PHP函數(shù)調(diào)用過程、函數(shù)使用需要注意的細節(jié)、函數(shù)值傳遞和引用傳遞的區(qū)別。
函數(shù)是我們PHP編程最重要的一個知識點,也是進行模塊化編程的基礎(chǔ),掌握好函數(shù)可以提高代碼的復(fù)用性、可讀性和可維護性。
(3)數(shù)組、排序和查找
數(shù)組的基本概念、數(shù)組的引用方式、數(shù)組引用陷阱、與PHP數(shù)組相關(guān)的函數(shù)(count、is_array、print_r、explode等)遍歷數(shù)組的三種方式、刪除數(shù)組元素和數(shù)組運算符、數(shù)組使用細節(jié)總結(jié)、內(nèi)部排序法和外部排序法介紹、冒泡排序和快速排序、選擇排序和插入排序、順序查找和二分查找、二維數(shù)組介紹和使用。
依據(jù)我的經(jīng)驗,我們?nèi)フ夜ぷ鞯臅r候,一定會一道關(guān)于排序和查詢的題,最常見的問題是: 請你寫出冒泡排序法,并使用二分查找來查找一個數(shù)。在項目開發(fā)中,數(shù)組是銜接變量和函數(shù)的重要數(shù)據(jù)類型,在MVC開發(fā)中,往往需在控制器中將數(shù)組分配給視圖去顯示,在算法中,數(shù)組也是變化最為靈活的。
(4)面向?qū)ο缶幊?/p>
面向?qū)ο缶幊袒靖拍?、類和對象的關(guān)系、如何定義類、成員屬性(變量)、如何創(chuàng)建對象實例及如何訪問對象屬性、對象在內(nèi)存中存在的形式、棧、堆、全局區(qū)、常量區(qū)和代碼區(qū)的關(guān)系、成員方法(函數(shù))及使用細節(jié)、構(gòu)造方法(函數(shù))、默認構(gòu)造方法(函數(shù))、this的基本概念和使用、析構(gòu)方法(函數(shù))、PHP的對象垃圾回收器、靜態(tài)變量(類變量)的概念和使用、靜態(tài)方法(類方法)的概念和使用、面向?qū)ο缶幊痰娜筇卣鹘榻B、面向?qū)ο缶幊?封裝、面向?qū)ο缶幊?繼承、面向?qū)ο缶幊?多態(tài)、訪問控制修飾符(public、protected、private)、方法重載(overload)、方法重寫(override)、方法重載(overload)和方法重寫(override)的比較、PHP魔術(shù)函數(shù)(__set __get __construct __destruct __call等)和魔術(shù)常量(__LINE__ , __FILE__ ,__FUNCTION__等)、抽象類(abstract class)的概念和使用接口(interface)的概念和使用、接口編程和繼承的區(qū)別、關(guān)鍵字final的使用、常量關(guān)鍵字const 的作用和使用注意事項、面向?qū)ο缶幊讨畯姶蟮姆瓷錂C制、面向?qū)ο缶幊讨畡討B(tài)代理。
面向?qū)ο缶幊桃呀?jīng)成為PHP編程的主流,面向?qū)ο缶幊套尦绦蜃兊酶訌姶蠛挽`活,更利于項目的開發(fā)和維護。關(guān)于面向?qū)ο缶幊?在 傳智播客 php視頻教程 61講-78講,看看什么才是真正的PHP面向?qū)ο笏枷?,什么是真正的OOP。
(5)錯誤處理和異常處理
錯誤處理的基本概念、PHP處理錯誤的三種方式介紹、使用die()進程錯誤處理、自定義錯誤和錯誤觸發(fā)器、錯誤日志、錯誤級別介紹、PHP異常處理的基本介紹、PHP異常處理(try throw catch)、自定義異常、如何設(shè)置頂級異常處理器、異常使用的規(guī)則。
在編寫php web 應(yīng)用程序時,錯誤處理是一個重要的部分。如果您的代碼缺少錯誤檢測編碼,那么程序看上去很不專業(yè),也為安全風(fēng)險敞開了大門。所以大家需要清楚在PHP編程中如何對錯誤和異常進行有效的處理,從而保證程序的安全和健壯。
(6)預(yù)定義超全局數(shù)組
預(yù)定義超全局數(shù)組-基本概念、$_GET、$_POST、$_REQUEST、$_SERVER、$_ENV、$_FILES、$_COOKIE、$_SESSION、$GLOBALS、$_GET 使用陷阱(sql注入和中文亂碼問題)(7)cookie和session 什么是會話、cookie的基本概念、cookie的curd操作、cookie重要的api介紹、cookie運行原理圖解、cookie的實際運用(顯示用戶上次訪問時間、顯示用戶上次瀏覽過的商品、)、cookie使用的注意事項、session數(shù)據(jù)存放的位置和形式、session的curd操作、session運行原理圖解、session實際案例-在線購物車、IE禁用Cookie后的session處理方案、session防止用戶非法入侵、session配合驗證碼使用、php.ini 中關(guān)于cookie和session配置說明(重點,難點)、自定義會話處理器、Session和Cookie的區(qū)別。
Cookie(小甜餅)是客戶端技術(shù),服務(wù)器把每個用戶的數(shù)據(jù)以cookie的形式 寫給用戶各自的瀏覽器。當(dāng)用戶使用瀏覽器再去訪問服務(wù)器中的web資源時,就會帶著各自的數(shù)據(jù)去。
Session是服務(wù)器端技術(shù),利用這個技術(shù),服務(wù)器在運行時可以為每一個用 戶的瀏覽器創(chuàng)建一個其獨享的session文件,當(dāng)用戶再去訪問服務(wù)器中的其它web資源時,可以從用戶各自的session 中取出數(shù)據(jù)為用戶服務(wù)。Session和Cookie是最重要的用戶行為跟蹤技術(shù),尤其是電商,sns項目中運用廣泛,因此是我們學(xué)習(xí)的重點和難點,也是面試筆試的重點。關(guān)于cookie和session大家可以參考傳智播客 php視頻教程 114-121講
(8)PHP文件編程
文件及文件編程是什么、文件流的基本概念、文件的操作方式、PHP文件編程函數(shù)匯總介紹、最常用的13個文件函數(shù)、使用文件完成網(wǎng)站計數(shù)器、文件上傳下載操作-mini版音樂共享網(wǎng)、無限級文件掃描器。
文件最主要的作用就是保存數(shù)據(jù),它既可以保存一張圖片,也可以保存視頻 ,聲音...,本章節(jié)要求同學(xué)們掌握文件的各種操作和上傳下載,動態(tài)創(chuàng)建和刪除目錄,文件和無限級掃描文件等,掌握好這些知識點對我們項目開發(fā)非常重要。
(9)PHP繪圖技術(shù)
php繪圖坐標(biāo)系、繪圖步驟說明、繪圖快速入門、繪圖最常用的函數(shù)、繪圖技術(shù)的實際運用—人口分布餅狀統(tǒng)計圖、專業(yè)的報表開發(fā)--JpGraph、JpGraph的安裝和配置、JpGraph實際應(yīng)用-網(wǎng)民支持情況統(tǒng)計圖、JpGraph中文亂碼處理。
如果你使用過財務(wù)軟件,那你一定看見過各種對財務(wù)數(shù)據(jù)進行統(tǒng)計和分析 的圖表,可能是表格,也可能是餅狀圖、柱狀圖、曲線圖..,簡單的說,就是使用圖表動態(tài)顯示數(shù)據(jù)。而這些圖表的顯 示都要使用到PHP的繪圖技術(shù),繪圖技術(shù)要求熟練的使用PHP的繪圖函數(shù)完成項目的需求。能開發(fā)一些統(tǒng)計圖,非常有實用價值。比如:
推薦學(xué)習(xí)傳智播客 php視頻教程
下載地址 http://php.itcast.cn
如何檢驗自己的學(xué)習(xí)效果,看看下面的一些面試題 , 看看能完成多少? 如果能正確完成80%,說明這個階段學(xué)到還不錯。
練習(xí)1: 簡述echo(),print(),print_r()的區(qū)別?
練習(xí)2: 說出PHP的超級全局變量數(shù)組,共九種
練習(xí)3: 如何在一個php函數(shù)中使用具有全局屬性的變量,說出兩種方式
練習(xí)4: 三個小題: 4.1.跳水比賽,8個評委打分。運動員的成績是8個成績?nèi)〉粢粋€最高分,去掉一個最低分,剩下的6個分數(shù)的平均分就是最后得分。使用一維數(shù)組實現(xiàn)打分功能。
4.2.請把打最高分的評委和最低分的評委找出來。4.3.找出最佳評委和最差評委。最佳評委就是打分和最后得分最接近的評委。最差評委就是打分和最后得分相差最大的。
練習(xí)5: include和require都能把另外一個文件包含到當(dāng)前文件中,他們有什么區(qū)別?Include和include_once又有什么區(qū)別?
練習(xí)6: 寫出一個能創(chuàng)建多級目錄的PHP函數(shù)
練習(xí)7: 寫出一個函數(shù),能遞歸列出某個目錄下的所有文件夾和文件名.練習(xí)8: 在防止SQL注入的時候,通、會把單引號、雙引號等轉(zhuǎn)義,需要用到哪個函數(shù) 練習(xí)9: 寫出插入排序法和快速排序法代碼
練習(xí)10: 二分查找的原理是什么? 請寫出二分查找函數(shù)
練習(xí)11: 寫出php的public、protected、private三種訪問控制模式的區(qū)別 練習(xí)12: 請寫出一個完整的嚴(yán)謹?shù)膯卫J?/p>
練習(xí)13: __set 和 __get 魔術(shù)函數(shù)是做什么的,在什么時候被觸發(fā) 練習(xí)14: 如何防止對象克隆, 對象克隆會復(fù)制 static屬性嗎? 練習(xí)15: 說說strip_tags的作用和用法?
練習(xí)16: 如果需要原樣輸出用戶輸入的內(nèi)容,在數(shù)據(jù)入庫前,要用哪個函數(shù)處理? 練習(xí)17: 如何控制多個進程去并發(fā)刪除,插入和更新數(shù)據(jù)庫的某張表? 練習(xí)18: PHP的安全模式和非安全模式的區(qū)別
(轉(zhuǎn)載請注明 傳智播客php學(xué)院-韓順平http://php.itcast.cn)
當(dāng)然,有些學(xué)員還給我寫信說這樣一個問題,如何去檢驗第一階段: PHP前端網(wǎng)頁開發(fā)基礎(chǔ),學(xué)習(xí)情況, 學(xué)習(xí)到怎樣的水平,再學(xué)習(xí)下一個階段比較好, 大家可以做一下下面的測試題,如果你能將下面的題都完成,說明你已經(jīng)有一定基礎(chǔ),可以學(xué)習(xí)下一個階段:(注意:需要獨立完成)
html css 試題
試題1:
請編寫如下一個html頁面
試題2:
請使用(div+css)盒子經(jīng)典布局編寫如下界面
試題3:
請使用div+css 盒子布局模式編寫sohu首頁面布局
javascript試題
試題1:
請按下面內(nèi)容編寫一個頁面,點頁面里的“全選”時,能選中或清除上面的所有水果。選擇你喜歡的水果:
□蘋果
□桔子
□香蕉
□葡萄
□桃子
□全選/全不選
試題2: 編寫一個簡單顯示和隱藏效果如圖所示:
試題3:
請使用javascript相關(guān)函數(shù)對一個url 【http://004km.cn、163.com 等)
練習(xí)5:計算一個js整數(shù)數(shù)組的所有元素的和。
練習(xí)6:計算一個字符串 , 比如 “abcde中國,你好hello,12345”, 中含有多少個中文字,多少個字母,多少個數(shù)字?
練習(xí)7:將一個js字符串?dāng)?shù)組的元素的順序進行反轉(zhuǎn)。(“3”,“a”,“8”,“haha”)轉(zhuǎn)換為(“haha”,“8”,“a”,“3”)。提示:第i個和第length-i-1個進行交換。不能使用js的reverse()函數(shù)。
好,現(xiàn)在我們談?wù)劦诙€階段應(yīng)該學(xué)習(xí)什么內(nèi)容,如何學(xué)習(xí)的問題。第二階段 PHP核心編程
(1)PHP基本語法加強 Apache--directory配置段、一個IP和多個域名綁定的兩種方式、HTTP協(xié)議入門介紹、Apache邏輯組件介紹、Apache生命周期、PHP運行之時序圖、PHP數(shù)據(jù)類型加強、PHP各種運算符加強、PHP三大流程控制加強、位運算(按位與、按位或、按位異或、按位非、位左移、位右移)、二進制(原碼、反碼、補碼)、PHP版本在線貸款計算器。
這里,我想說明一下: PHP基礎(chǔ)語法看似簡單,但是也不可大意,有些PHP程序員工作了2年,對PHP運行的原理都不清楚,對Apache的一些重要調(diào)優(yōu)配置也不了解,這樣的程序員,在公司是不行的,很難得到提升。所以就一直是一個編碼工人,薪資也上不去。
比如面試中經(jīng)常問到: PHP中一個整數(shù)的范圍是多少, 小數(shù)的能表示的范圍是多少? 再比如如何在Apache中配置一個404錯誤頁面,如何給一個主機配置一個域名,具體怎樣操作?這樣一些基礎(chǔ)的問題都必須在這個階段搞定。推薦大家看 傳智播客php視頻教程 23講-45講 ,有詳細到位的講解。
(2)PHP函數(shù)
PHP函數(shù)的基本介紹、如何自定義函數(shù)、PHP頁面調(diào)用函數(shù)、require()、require_once()、include()和include_once()的區(qū)別、從內(nèi)存分析PHP函數(shù)調(diào)用過程、函數(shù)使用需要注意的細節(jié)、函數(shù)值傳遞和引用傳遞的區(qū)別。
函數(shù)是我們PHP編程最重要的一個知識點,也是進行模塊化編程的基礎(chǔ),掌握好函數(shù)可以提高代碼的復(fù)用性、可讀性和可維護性。
(3)數(shù)組、排序和查找 數(shù)組的基本概念、數(shù)組的引用方式、數(shù)組引用陷阱、與PHP數(shù)組相關(guān)的函數(shù)(count、is_array、print_r、explode等)遍歷數(shù)組的三種方式、刪除數(shù)組元素和數(shù)組運算符、數(shù)組使用細節(jié)總結(jié)、內(nèi)部排序法和外部排序法介紹、冒泡排序和快速排序、選擇排序和插入排序、順序查找和二分查找、二維數(shù)組介紹和使用。依據(jù)我的經(jīng)驗,我們?nèi)フ夜ぷ鞯臅r候,一定會一道關(guān)于排序和查詢的題,最常見的問題是: 請你寫出冒泡排序法,并使用二分查找來查找一個數(shù)。在項目開發(fā)中,數(shù)組是銜接變量和函數(shù)的重要數(shù)據(jù)類型,在MVC開發(fā)中,往往需在控制器中將數(shù)組分配給視圖去顯示,在算法中,數(shù)組也是變化最為靈活的。
(4)面向?qū)ο缶幊?/p>
面向?qū)ο缶幊袒靖拍?、類和對象的關(guān)系、如何定義類、成員屬性(變量)、如何創(chuàng)建對象實例及如何訪問對象屬性、對象在內(nèi)存中存在的形式、棧、堆、全局區(qū)、常量區(qū)和代碼區(qū)的關(guān)系、成員方法(函數(shù))及使用細節(jié)、構(gòu)造方法(函數(shù))、默認構(gòu)造方法(函數(shù))、this的基本概念和使用、析構(gòu)方法(函數(shù))、PHP的對象垃圾回收器、靜態(tài)變量(類變量)的概念和使用、靜態(tài)方法(類方法)的概念和使用、面向?qū)ο缶幊痰娜筇卣鹘榻B、面向?qū)ο缶幊?封裝、面向?qū)ο缶幊?繼承、面向?qū)ο缶幊?多態(tài)、訪問控制修飾符(public、protected、private)、方法重載(overload)、方法重寫(override)、方法重載(overload)和方法重寫(override)的比較、PHP魔術(shù)函數(shù)(__set __get __construct __destruct __call等)和魔術(shù)常量(__LINE__ , __FILE__ ,__FUNCTION__等)、抽象類(abstract class)的概念和使用接口(interface)的概念和使用、接口編程和繼承的區(qū)別、關(guān)鍵字final的使用、常量關(guān)鍵字const 的作用和使用注意事項、面向?qū)ο缶幊讨畯姶蟮姆瓷錂C制、面向?qū)ο缶幊讨畡討B(tài)代理。
面向?qū)ο缶幊桃呀?jīng)成為PHP編程的主流,面向?qū)ο缶幊套尦绦蜃兊酶訌姶蠛挽`活,更利于項目的開發(fā)和維護。關(guān)于面向?qū)ο缶幊?在 傳智播客 php視頻教程 61講-78講,看看什么才是真正的PHP面向?qū)ο笏枷?,什么是真正的OOP。
(5)錯誤處理和異常處理
錯誤處理的基本概念、PHP處理錯誤的三種方式介紹、使用die()進程錯誤處理、自定義錯誤和錯誤觸發(fā)器、錯誤日志、錯誤級別介紹、PHP異常處理的基本介紹、PHP異常處理(try throw catch)、自定義異常、如何設(shè)置頂級異常處理器、異常使用的規(guī)則。
在編寫php web 應(yīng)用程序時,錯誤處理是一個重要的部分。如果您的代碼缺少錯誤檢測編碼,那么程序看上去很不專業(yè),也為安全風(fēng)險敞開了大門。所以大家需要清楚在PHP編程中如何對錯誤和異常進行有效的處理,從而保證程序的安全和健壯。
(6)預(yù)定義超全局數(shù)組
預(yù)定義超全局數(shù)組-基本概念、$_GET、$_POST、$_REQUEST、$_SERVER、$_ENV、$_FILES、$_COOKIE、$_SESSION、$GLOBALS、$_GET 使用陷阱(sql注入和中文亂碼問題)
(7)cookie和session 什么是會話、cookie的基本概念、cookie的curd操作、cookie重要的api介紹、cookie運行原理圖解、cookie的實際運用(顯示用戶上次訪問時間、顯示用戶上次瀏覽過的商品、)、cookie使用的注意事項、session數(shù)據(jù)存放的位置和形式、session的curd操作、session運行原理圖解、session實際案例-在線購物車、IE禁用Cookie后的session處理方案、session防止用戶非法入侵、session配合驗證碼使用、php.ini 中關(guān)于cookie和session配置說明(重點,難點)、自定義會話處理器、Session和Cookie的區(qū)別。
Cookie(小甜餅)是客戶端技術(shù),服務(wù)器把每個用戶的數(shù)據(jù)以cookie的形式 寫給用戶各自的瀏覽器。當(dāng)用戶使用瀏覽器再去訪問服務(wù)器中的web資源時,就會帶著各自的數(shù)據(jù)去。Session是服務(wù)器端技術(shù),利用這個技術(shù),服務(wù)器在運行時可以為每一個用 戶的瀏覽器創(chuàng)建一個其獨享的session文件,當(dāng)用戶再去訪問服務(wù)器中的其它web資源時,可以從用戶各自的session 中取出數(shù)據(jù)為用戶服務(wù)。Session和Cookie是最重要的用戶行為跟蹤技術(shù),尤其是電商,sns項目中運用廣泛,因此是我們學(xué)習(xí)的重點和難點,也是面試筆試的重點。關(guān)于cookie和session大家可以參考傳智播客 php視頻教程 114-121講
(8)PHP文件編程
文件及文件編程是什么、文件流的基本概念、文件的操作方式、PHP文件編程函數(shù)匯總介紹、最常用的13個文件函數(shù)、使用文件完成網(wǎng)站計數(shù)器、文件上傳下載操作-mini版音樂共享網(wǎng)、無限級文件掃描器。
文件最主要的作用就是保存數(shù)據(jù),它既可以保存一張圖片,也可以保存視頻 ,聲音...,本章節(jié)要求同學(xué)們掌握文件的各種操作和上傳下載,動態(tài)創(chuàng)建和刪除目錄,文件和無限級掃描文件等,掌握好這些知識點對我們項目開發(fā)非常重要。
(9)PHP繪圖技術(shù)
php繪圖坐標(biāo)系、繪圖步驟說明、繪圖快速入門、繪圖最常用的函數(shù)、繪圖技術(shù)的實際運用—人口分布餅狀統(tǒng)計圖、專業(yè)的報表開發(fā)--JpGraph、JpGraph的安裝和配置、JpGraph實際應(yīng)用-網(wǎng)民支持情況統(tǒng)計圖、JpGraph中文亂碼處理。如果你使用過財務(wù)軟件,那你一定看見過各種對財務(wù)數(shù)據(jù)進行統(tǒng)計和分析 的圖表,可能是表格,也可能是餅狀圖、柱狀圖、曲線圖..,簡單的說,就是使用圖表動態(tài)顯示數(shù)據(jù)。而這些圖表的顯 示都要使用到PHP的繪圖技術(shù),繪圖技術(shù)要求熟練的使用PHP的繪圖函數(shù)完成項目的需求。能開發(fā)一些統(tǒng)計圖,非常有實用價值。比如:
如何檢驗自己的學(xué)習(xí)效果,看看下面的一些面試題 , 看看能完成多少? 如果能正確完成80%,說明這個階段學(xué)到還不錯。
練習(xí)1: 簡述echo(),print(),print_r()的區(qū)別?
練習(xí)2: 說出PHP的超級全局變量數(shù)組,共九種
練習(xí)3: 如何在一個php函數(shù)中使用具有全局屬性的變量,說出兩種方式
練習(xí)4: 三個小題: 4.1.跳水比賽,8個評委打分。運動員的成績是8個成績?nèi)〉粢粋€最高分,去掉一個最低分,剩下的6個分數(shù)的平均分就是最后得分。使用一維數(shù)組實現(xiàn)打分功能。4.2.請把打最高分的評委和最低分的評委找出來。
4.3.找出最佳評委和最差評委。最佳評委就是打分和最后得分最接近的評委。最差評委就是打分和最后得分相差最大的。
練習(xí)5: include和require都能把另外一個文件包含到當(dāng)前文件中,他們有什么區(qū)別?Include和include_once又有什么區(qū)別?
練習(xí)6: 寫出一個能創(chuàng)建多級目錄的PHP函數(shù)
練習(xí)7: 寫出一個函數(shù),能遞歸列出某個目錄下的所有文件夾和文件名.練習(xí)8: 在防止SQL注入的時候,通、會把單引號、雙引號等轉(zhuǎn)義,需要用到哪個函數(shù)
練習(xí)9: 寫出插入排序法和快速排序法代碼
練習(xí)10: 二分查找的原理是什么? 請寫出二分查找函數(shù)
練習(xí)11: 寫出php的public、protected、private三種訪問控制模式的區(qū)別
練習(xí)12: 請寫出一個完整的嚴(yán)謹?shù)膯卫J?/p>
練習(xí)13: __set 和 __get 魔術(shù)函數(shù)是做什么的,在什么時候被觸發(fā)
練習(xí)14: 如何防止對象克隆, 對象克隆會復(fù)制 static屬性嗎?
練習(xí)15: 說說strip_tags的作用和用法?
練習(xí)16: 如果需要原樣輸出用戶輸入的內(nèi)容,在數(shù)據(jù)入庫前,要用哪個函數(shù)處理?
練習(xí)17: 如何控制多個進程去并發(fā)刪除,插入和更新數(shù)據(jù)庫的某張表?
練習(xí)18: PHP的安全模式和非安全模式的區(qū)別
第二篇:PHP學(xué)習(xí)推薦
PHP學(xué)習(xí)推薦
PHP,是英文超級文本預(yù)處理語言Hypertext Preprocessor的縮寫。PHP 是一種 HTML 內(nèi)嵌式的語言,是一種在服務(wù)器端執(zhí)行的嵌入HTML文檔的腳本語言,現(xiàn)在越來越多的人加入到了php的大家庭中,其中很多人只是淺嘗輒止,為何會如此呢?最大的障礙莫過于學(xué)習(xí)的過程枯燥乏味,從而失去學(xué)習(xí)興趣,那么小編就自己的經(jīng)驗來說說怎樣學(xué)習(xí)php吧。
學(xué)習(xí)方法之視頻教程
相對于讀書來說,我更喜歡看視頻學(xué)習(xí),可能小編我對影像比文字記憶更加深刻吧。每看完一個視頻教程,我都會閉上眼睛休息一會,把剛才看的內(nèi)容消化消化,然后再開始練習(xí)剛才看過的內(nèi)容,盡可能不邊看邊做,因為這樣學(xué)的快同樣也忘得快,如果實在想不起來的話,可以再打開教程看一遍,切記不可囫圇吞棗,好高騖遠,要穩(wěn)扎穩(wěn)打,把你看過的教程切切實實的記在心里。只有一步一個腳印,你的學(xué)習(xí)之路才能走的更遠,否則的話,你走的越遠,越會覺的道路是如此艱辛,或許你就會放棄學(xué)習(xí)。那么都有哪些視頻教程能幫我們學(xué)習(xí)php呢,小編我就為大家介紹幾個吧:
php100
LAMP兄弟連
李炎恢的php
學(xué)習(xí)方法之看書: 1.《PHP與MySQL程序設(shè)計(第4版)》
2.《PHP Web 2.0 開發(fā)實戰(zhàn)》
3.《PHP高級程序設(shè)計:模式、框架與測試》
4.《PHP 5 高級應(yīng)用開發(fā)實踐》
5.《細說php》
學(xué)習(xí)過程中不要死記語法,要多動手,多練習(xí),當(dāng)你遇到問題的時候,首先嘗試自己解決。多用google,baidu,網(wǎng)絡(luò)是一個大知識庫,是最好的老師,你遇到的問題,別人也遇到過,多去搜索一下吧.多閱讀別人的源代碼,要看懂別人的設(shè)計思想,不斷融為已用.
第三篇:php學(xué)習(xí)經(jīng)驗
感覺要學(xué)好一門編程語言,關(guān)鍵要有對比,多看看別人的代碼,多寫代碼。
我的php是自學(xué)的,所以自學(xué)的角度來說。
一開始都是看書,在選書的過程中要根據(jù)自己的情況,沒有其他編程語言基礎(chǔ)的,或者只有大學(xué)那點C語言基礎(chǔ)的,都建議看國內(nèi)的作者寫的書,國外寫的一般涉及面較廣,相對難度較大,不太適合初學(xué)者。
這個過程,可以看視頻加快學(xué)習(xí)進度,推薦的入門視頻lamp兄弟連和php100的視頻。一定要經(jīng)常上機練手。多多加相關(guān)的qq群,去那些php技術(shù)的論壇,去看看他們具體談?wù)摰脑掝},看看自己薄弱之處。當(dāng)你看完一本,這種書的內(nèi)容的結(jié)尾一般都是用smarty或者zend framework做一個小項目,就不必在看書了(國內(nèi)的書都是一個套路,選一本最厚的看,其他的以后都不用再看了),可以先做一個功能齊全的新聞發(fā)布系統(tǒng),在實踐中鞏固書本的知識。
基本的語法和面向?qū)ο蟮膬?nèi)容看完之后。必須了解一下php的框架,建議初學(xué)者先看看thinkphp,比較簡單,之后再看看zend framework這類比較大的框架。這一步不需要精通而只要初步了解一下MVC和面向?qū)ο缶幊痰闹R,之后在學(xué)習(xí)中,不斷加深。
當(dāng)這些做完,你對做web開發(fā)有個大概印象時。就要看看別人成熟的產(chǎn)品,php的cms,像dede,ecshop,wordpress,joomla,drupal等,抓一個自己認為適合自己現(xiàn)階段最適合學(xué)的,也是視頻和書本輔助的,好像joomla,drupal都有實體書了。學(xué)習(xí)別人的cms,能讓學(xué)到很多技術(shù)和思想。但了解別人代碼的意思,這個過程是痛苦的,特別是對很多基礎(chǔ)不牢的,但這是必須的,和別人對比才能進步。php就是這樣,你沒有任何技巧都可以搭建出一個網(wǎng)站。但這樣的網(wǎng)站根本就不可作為商業(yè)用途。
之后,就要在工作崗位上提升自己,所以先要找一份工作崗位,現(xiàn)在php還是很熱門的(以后我不敢保證),這種工作挺好找的,只要你能做出一個像樣的新聞發(fā)布系統(tǒng),一般的小公司會要的,但是工資比較低,可能是一千來塊。要學(xué)好一門語言,都是要有相應(yīng)的工作經(jīng)驗的,不太可能是自己在家搗鼓搗鼓就能成為高手的。在工作中跟別人相互學(xué)習(xí),在工作不斷地解決問題,能讓你不斷進步。
在學(xué)習(xí)中一些問題也要加強,你可以看看招聘中他們所寫的要求比如緩存,靜態(tài)化等等,比較實用的東西,你是否掌握。還有php高手都是多面手,linux,mysql甚至其他語言都是精通的。
第四篇:新手淺談學(xué)習(xí)PHP
新手如何學(xué)習(xí)PHP
從默默自己向別人問怎么學(xué)PHP開始,到后來不少人又來問默默怎么學(xué)PHP,不管默默是新手,還是老鳥,似乎總是感覺摸不出一條清晰的脈絡(luò)來,不過,默默既然學(xué)會了PHP,那么我走的這條路或多或少的有一定借鑒性。
PHP的背景恐怕就不用默默贅言了,我相信大家選擇一種語言,并不是看它的背景和悠久歷史,更重要的是看它的實用性,華而不實的語言哪怕是再輝煌的歷史,也畢將步向沒落,可喜的是PHP經(jīng)受住了考驗,也因此,它確實是一種值得學(xué)習(xí)的語言。
默默一直是聽從別人的經(jīng)驗長大的,也因此在前輩們的經(jīng)驗里讓默默少走了許多的彎路,更快的步入了正規(guī),在此向那些我至盡不知道其名字的前輩們道聲謝謝,在默默的眼里,幫助不分大小,只要是幫助,總會讓默默的心里暖融融的,我想,前輩們幫助我,并不是為了得到我的一句謝謝,更多的是出于一種責(zé)任感和對默默的期望,所以我想,只有學(xué)好PHP,才能對得起前輩們的汗水。
正如我所說的,默默也終于感覺到了一種責(zé)任感,默默不知道自己的經(jīng)驗到底能幫助新手多少,但是默默明白,現(xiàn)在到了履行責(zé)任的時候了,我有必要把自己的經(jīng)驗告訴給所有希望學(xué)好PHP的人,只有這樣才能讓中國的PHP不斷的進步,不斷的發(fā)展,在世界上占據(jù)一席之地。
默默學(xué)習(xí)PHP的這段期間,感覺國內(nèi)的PHP環(huán)境越來越成熟,規(guī)范也在逐漸的健全,PHPCHINA的成立,標(biāo)志著與官方直接掛鉤的PHP機構(gòu)在中國正式落戶了,在此獻上遲到的掌聲!
好的,切入正題:
我想在講述自己的學(xué)習(xí)方式前,對那些期望能從我的文章中獲得有用信息的人說一句心里話:
默默的文章不會對您的學(xué)習(xí)起到實質(zhì)性的作用,您能否成功,還得靠自己的,堅持,堅持,再堅持,就是步入成功的不二法門。
我先把我自己學(xué)習(xí)PHP的過程做一下概括:
(1)熟悉HTML/CSS/JS等網(wǎng)頁基本元素,完成階段可自行制作完整的網(wǎng)頁,對元素屬性達到熟悉程度
(2)理解動態(tài)語言的概念,運做機制,熟悉PHP語法
(3)學(xué)習(xí)如何將PHP與HTML結(jié)合起來完成簡單動態(tài)頁面
(4)接觸MYSQL,開始設(shè)計數(shù)據(jù)庫程序
(5)不斷鞏固,摸透大部分PHP常用函數(shù),并可理解OOP,MYSQL優(yōu)化,以及模板
(6)完成一個功能齊全的動態(tài)站點
我的這套線路可能跟許多學(xué)習(xí)PHP的愛好者不謀而合,這也算是一個循序漸進的學(xué)習(xí)過程,不過新手不要看到上面的概括就以為學(xué)習(xí)蠻簡單的,默默在此不得不對您稍微潑一下冷水,任何東西其實都不簡單,即使是小吃部的燒餅也不是一下子就會做成的。
我先解釋一下我的學(xué)習(xí)思路。
首先,理解網(wǎng)站這一概念之后不難看出,任何網(wǎng)站都是由網(wǎng)頁組成的,也就是說想完成網(wǎng)站,必須先學(xué)會做網(wǎng)頁,因此必須要掌握了HTML,才能為今后制作網(wǎng)站打下基礎(chǔ)。
在學(xué)習(xí)HTML中我想邊學(xué)邊做是最有效的方式,當(dāng)然這一方式對于學(xué)習(xí)PHP同樣是最有效的。
HTML中的任何元素都要親自實踐,只有明白了什么元素會起到什么效果之后,你才會記憶深刻,而一味的啃書,絕對是不行的,我想大部分新手之所以覺得概念難學(xué),大部分是一個字“懶”,懶是阻止進步的最大敵人,所以克服掉懶的習(xí)慣,才能更快的學(xué)好一樣?xùn)|西。
也許您在學(xué)習(xí)PHP的時候只想盡快的開發(fā)一個網(wǎng)站,也就會想我做網(wǎng)站,干嘛要學(xué)什么網(wǎng)頁這些小兒科?不難看出,眼高手低的新手不在少數(shù),這種思想無疑于建造空中樓閣,你不建地基,何來的房頂呢?
OK,掌握靜態(tài)網(wǎng)頁的制作技術(shù)是學(xué)習(xí)開發(fā)網(wǎng)站的先決條件,這一點就講到這里,因為這篇文章不是教程文章,也就不對技術(shù)進行深入的刨析了。
我假設(shè)你目前已經(jīng)可以完成一個靜態(tài)頁面了,當(dāng)然,做的好看難看是另外一說,默默的第一個網(wǎng)頁也沒好看到哪去,但是“孩子”再丑,咱們做“爹媽”的也不能嫌棄不是?這畢竟是咱的成果。
那么咱們就開始學(xué)習(xí)動態(tài)語言的概念吧,剛一接觸動態(tài)語言,可能很多人都會蒙了,怎么這亂七八糟的東西,在網(wǎng)頁里顯示的時候卻是另外一碼事?其實這并不算亂七八糟,你寫的HTML代碼不也一樣是一堆堆的字符嗎?畢竟,代碼并不是作為直接輸出的,而是經(jīng)過處理的,說白了,HTML是經(jīng)過HTML解析器,而PHP當(dāng)然也就通過PHP解析器了,跟學(xué)習(xí)HTML一樣的道理,想讓任何的解析器完成操作,就必須使用它們專用的語法結(jié)構(gòu),所以PHP長相奇怪也就不足為奇了。
對于PHP的理解是新手最難邁過的一道門檻,不過你應(yīng)該感到幸運的是PHP已經(jīng)最大極限的為了新手而努力了,如果你學(xué)過其他的語言,也許會覺得PHP的確相當(dāng)?shù)暮唵?,但是如果你之前什么都沒學(xué)過,那么阿彌陀佛,硬著頭皮琢磨吧。
書過三遍自然熟,這個簡單的道理告訴我們,即使你理解不了PHP,但是也必須先跟它混個臉熟,看,一遍遍的看,看的同時一邊琢磨,一邊按照它所教的打代碼,即使你搞不清楚那些代碼到底是干嘛的,但是起碼你應(yīng)該找找感覺。
在一段掙扎之后,聰明的你,顯然已經(jīng)逐漸的開悟了,慢慢的理解了編程的概念,那么祝賀你,你已經(jīng)邁出了成功的第一步。
搞清楚HTML和PHP的概念,那么PHP和HTML混合編程應(yīng)該不成問題,在這期間,你完全可以讓PHP給你算算一加一等于幾,然后在瀏覽器輸出,不要覺得幼稚,這的確是跟阿波羅登月一樣,你打的是一小段代碼,但是對于你的編程之路,可是邁出了一大步??!興奮吧?但是不得不再給你潑點冷水,您還是菜鳥一個。
高興一段時間就必須繼續(xù)努力了,接下來就是學(xué)習(xí)數(shù)據(jù)庫了,MYSQL可算是PHP的黃金搭檔了,不過,雖然話是這么說,你也可能恨不得把MYSQL給生吞活剝了,因為這一行一列的東東簡直讓自己頭暈?zāi)垦!?/p>
頭暈歸頭暈,目眩歸目眩,你不可能吃飯的時候咬了自己一下舌頭就從此不吃飯了不是?放下畏懼,繼續(xù)努力,咱們是來征服它的,而不是被它征服的,振奮起來吧同志。
在一番搏斗之后,你終于理解了數(shù)據(jù)庫的概念,而且讓你興奮不已的是你終于可以通過PHP來連接數(shù)據(jù)庫了,這期間你是怎么學(xué)會的,我們不去考證了,但是事實證明,你已經(jīng)可以了。
學(xué)會了PHP和數(shù)據(jù)庫的你,無疑是左手拿著MOTOLOLA右手拿著NOKIA,要多瀟灑,有多瀟灑,哈哈,終于學(xué)會了,但是可能這個時候,又會有人不經(jīng)意的拍拍肩膀?qū)δ阏f:哥們,別高興的太早,你還是菜鳥,離學(xué)會還差著一大截呢!
等到你發(fā)奮努力的學(xué)會了用PHP成功的插入,刪除,更新數(shù)據(jù)的時候,顯然,你已經(jīng)距離成功指日可待了。
這個時候的你也許是這種狀態(tài):
你會HTML嗎?會,我能編好幾個大表格排板的網(wǎng)頁啦!
你會PHP嗎?會,我會把一加一的運算寫在函數(shù)里,然后調(diào)用啦!
你會MYSQL嗎?會,我會把我的信息在數(shù)據(jù)庫里插入刪除啦
那,接下來你該怎么做呢?我覺得,小試一下身手,大概是沒問題了,那么交給你個任務(wù),做個留言本吧,這和HELLO WORLD有一比啊!^_^,同是新手面臨的第一道關(guān)。
花了一段時間,你終于學(xué)會把表單的數(shù)據(jù)插入數(shù)據(jù)庫,然后顯示出來了,應(yīng)該說一個程序的雛形已經(jīng)誕生了。
但是,你可能瞅瞅東,看看西,人家這個編論壇,那個CMS,還有那啥CRM,我啥時候?qū)懸粋€呢?
不要急,可以說你的馬步已經(jīng)扎的差不多了,接下來就要開始練把勢的時候了,如果有條件的話,用筆或者打印一個簡易的PHP手冊在身上,時不時的摸出來看看,記得,去WC也不能放過(^2^)。
再有條件的話,買本書看看吧,《PHP+MYSQL WEB開發(fā)(第三版)》號稱圣經(jīng)級,(也許是個不錯的選擇(聲明:作者沒給我啥好處費,我也不是書托,隔著大老遠,我連他老兄的面都沒見過的說-_-)
鞏固了自己的知識,熟悉了PHP和MYSQL開發(fā)的要領(lǐng)之后,再回頭看你寫的那個留言本,你也許會懷疑那真的是你寫的嗎?當(dāng)然,如果屋里還有鬼的話,也許是它寫的-_-
這個時候,你的留言本應(yīng)該加入注冊以及分頁功能了,而如果你更強的話,UI(用戶界面)也可以加強,完成之后,感覺是不是特有成就感?不管怎么樣,咱好歹是寫了一個動態(tài)網(wǎng)站程序了,放在自己的網(wǎng)站上耍耍吧,讓好朋友來看看,嘿,看咱寫的多棒,然后再在網(wǎng)上宣傳一下。
幾天之后你再打開留言本,哎?哇,一下彈出N多頁面!很明顯,你的留言本并沒有做好安全防范,被人用JS代碼小小的耍了一下,我很同情你這個時候的感受,但是沒有別的辦法了,繼續(xù)努力吧!
你發(fā)奮努力,熟悉了安全方面的問題,然后又設(shè)計了一些程序,感覺還不錯。
那么接下來,這就算學(xué)會啦?NO,NO,NO,還早呢,你至盡還沒碰過OOP之類的吧?模板呢?
恩,學(xué)!加緊學(xué)呀學(xué),學(xué)會了這些之后,你又學(xué)會了生成靜態(tài)網(wǎng)頁,現(xiàn)在你應(yīng)該接觸一下XML了,恩,XML也了解了,那么AJAX你也得接觸接觸吧?AJAX完了....然后...總而言之,你絕對不會發(fā)現(xiàn)你全部都學(xué)會了,一些真正的強人總會搞出新玩意來丟給你,你不學(xué)就落后了,也印證了前人的經(jīng)驗,果然是學(xué)無止境??!
我想通過我的一番YY,你也應(yīng)該大致熟悉了一些學(xué)習(xí)過程,也許我的過程和你的有些出路,但是不管怎么樣是殊途同歸,我寫這么多,也只是給大家一個借鑒的機會,至于好與不好,默默不敢打包票^0^
看完之后你發(fā)現(xiàn),羅嗦這么多,對我一點用處沒有啊,我知道該怎么學(xué),但是我想如何才能更快的學(xué),一周速成,啊不,24小時速成那種,默默你有沒?
我.......我沒有,但是2分鐘之內(nèi)把你扁進醫(yī)院里,我倒是有把握-_-
學(xué)東西,永遠不要妄想有速成這一說,告訴你了一個方式,但是缺少努力這一環(huán)節(jié),那也是白搭。
但是有一點我可以給你保證的就是,你學(xué)會了PHP,那么學(xué)其他的語言,肯定速成,反過來也一樣,如果你之前學(xué)過其他的語言,那么學(xué)PHP肯定快。
不過語法好學(xué),但是怎么用語法來實現(xiàn)每個人都有每個人的方式,幾乎是各有千秋。然而借鑒別人成功的代碼,絕對是有益無害,因此,多看那些經(jīng)過千錘百煉凝出來的經(jīng)典代碼,是進階的最好方法。
講了這么多,無非是想說:學(xué)習(xí)PHP不僅要掌握方法,更多的是付出汗水,我不希望看到中途放棄的人,相信自己,相信自己的選擇,更要相信自己的能力,如果自己想放棄,暴力一點的話,就自己抽自己一個嘴巴,然后大吼:別人可以,我為什么就不可以?(是不是有點閻羅教練的味道,默默的確是電影看多了,抽嘴巴是會痛的,各位其實明白這個道理了就行了)
另外要叮囑各位的是,抵御誘惑,ASP/PHP/JSP/.NET的對比也許會讓你無所適從,你也許學(xué)了一半PHP,又開始打C#的主意,或者有人說JAVA很強,這個時候的你絕對不能動搖,哪怕你真想學(xué),也得學(xué)會了PHP。然后再學(xué),見異思遷是最不可取的,狗熊掰玉米就是這個道理,如果經(jīng)常中途放棄,只能是一無所獲,還浪費了N多的時間和經(jīng)歷,得不償失,最重要的是,你會被別人瞧不起,沒有人會喜歡和見異思遷的人交朋友,因為這種人太不安分,太不可靠,因此,你必須要強迫自己完成自己的目標(biāo),哪怕可能會很難受,也得堅持,毅力就是這么鍛煉出來的。
第五篇:php學(xué)習(xí)總結(jié)
調(diào)試/*………*/ //…….#..........插入時考慮清楚字段類型避免插入后出現(xiàn)缺值,亂碼
@ 屏蔽錯誤or die 條件顯示
以前學(xué)習(xí)php類的總結(jié):
1.php中不能重載,但是能用子類覆蓋父類的方法名稱來實現(xiàn)新的重載
1.1 在子類中調(diào)用父類的覆蓋部分可以使用 父類名稱::方法名稱();
2.final 只能定義類和方法,不能使用final定義成員屬性,因為final是常量的意思,在php里定義常量使用的是define函數(shù)
2.1 final關(guān)鍵字標(biāo)記的類不能被繼承
2.2 final關(guān)鍵字標(biāo)記的方法不能被子類重寫
3.const是一個定義常量的關(guān)鍵字,在php中定義常量使用的是define()函數(shù),但是在類里定義常量使用的是“const” 這個關(guān)鍵字
3.1在程序中不能修改它的值。
3.2 訪問const 修飾的成員屬性要使用類名,在本類的方法里使用“self”關(guān)鍵字,但不使用“$”符號,也不能使用對象來訪問。
4.static關(guān)鍵字可以描述類中的成員屬性和成員方法
4.1 static 的成員屬于類,而不屬于任何對象,4.2 static的成員是在類第一次被加載的時候分配的空間,其他類無法訪問的,只對類的實例共享,能一定程度對類該成員形成保護
4.3 靜態(tài)成員放到了“初始化靜態(tài)段”,在類第一次加載的時候放入的,可以讓堆內(nèi)存里的每個對象共享。所以在靜態(tài)方法里,可以使用這個方法所在的類的“類名”,也可以使用“self”來訪問其他靜態(tài)成員。“self”代表這個靜態(tài)方法所在的類。
4.3.1 在類里的靜態(tài)方法是不能訪問類的非靜態(tài)成員的。
4.3.2 在類的非靜態(tài)方法里可以訪問靜態(tài)成員:”self:成員屬性“;
4.4類的靜態(tài)變量,非常類似全局變量,能夠被所有類的實例共享,類的靜態(tài)方法也是一樣,類似于全局函數(shù)。
4.5 在類內(nèi)函數(shù)訪問靜態(tài)變量時前面加self::靜態(tài)函數(shù)
4.6 靜態(tài)變量可以在類外直接訪問,訪問方法是類名::靜態(tài)變量
4.7 靜態(tài)函數(shù)可以在類外直接訪問,訪問方式是類名::靜態(tài)函數(shù)
4.8 在類內(nèi)靜態(tài)函數(shù)訪問另一個靜態(tài)函數(shù)時使用 類名::靜態(tài)函數(shù)名
4.8.1 靜態(tài)函數(shù)在類內(nèi)訪問靜態(tài)變量時,訪問方式是類名::靜態(tài)變量
4.8.2 靜態(tài)函數(shù)在類內(nèi)訪問靜態(tài)變量時,訪問方式除了是類名::靜態(tài)變量外,還可以使用self::靜態(tài)變量
4.9 在類內(nèi)靜態(tài)函數(shù)訪問另一個靜態(tài)函數(shù)時除了使用 類名::靜態(tài)函數(shù)名外,還可以使用self::靜態(tài)函數(shù)名,也可以直接調(diào)用靜態(tài)函數(shù)
4.10 靜態(tài)函數(shù)內(nèi)不能訪問非靜態(tài)變量
4.11 在類內(nèi)靜態(tài)函數(shù)不能使用$this->非靜態(tài)函數(shù)名訪問非靜態(tài)函數(shù),可以使用self::非靜態(tài)函數(shù)名
4.12
5.類里的”$this“,在php里面提供了一個本對象的引用$this,每個對象里面都有一個對象的引用$this來代表這個對象,完成對象內(nèi)部成員的調(diào)用。
5.1 $this 就是對象內(nèi)部代表這個對象的引用。
6.類里“self”,self 和$this相似,只不過self是代表這個靜態(tài)方法所在的類,所以在靜態(tài)方法里,可以使用這個方法所在的類的”類名“,也可以使用“self”來訪問其他的靜態(tài)成員,通常使用后者”self::成員屬性“。
7.類里”__“開頭的函數(shù)名
7.1類里”__“開頭的函數(shù)名都是在某一時刻不同情況下自動調(diào)用執(zhí)行的方法。
7.2__toString()方法也是自動被調(diào)用,是直接輸出對象引用時自動調(diào)用的。比如“$p = new Person()”,直接用echo輸出$p會產(chǎn)生錯誤,如果在類里定義了__toString()方法,再用echo直接輸出對象引用的時候就不會產(chǎn)生錯誤了
8.對象串行化
8.1 __sleep()方法,在對象串行化的時候,會調(diào)用一個__sleep()方法來完成一些睡前的事情,__sleep()函數(shù)不接受任何參數(shù),但返回一個數(shù)組,其中包含需要串行化的屬性。未被包含的屬性降在串行化時被忽略,如果沒有__sleep()方法,php將保存所以屬性.8.2 __wakeup()方法,在重新醒來時,即由二進制串重新組成一個對象的時候,則會自動調(diào)用__wakeup(),做一些對象醒來就要做的動作。
8.3 有時你可能需要一個對象在反串行化后立即執(zhí)行.為了這樣的目的,PHP會自動尋找__sleep和__wakeup方法.9.protected 成員能被同個類中的所有方法和繼承出的類的中所有方法訪問到,不能被父類的實例直接訪問。protected and public 可以動態(tài)綁定
10.private 大部分private屬性仍然可以被外部代碼共享.解決方法是用一對public方法,一個是get(獲取屬性的值),另一個是set(設(shè)置屬性的值).10.1private 不可以動態(tài)綁定。Private成員只存在于它們所在的類內(nèi)部.不像public和protected成員那樣,PHP模擬靜態(tài)綁定.10.2 什么時候用到private?private成員只有當(dāng)你不想讓子類繼承改變或特殊化父類的行為時才用到,這種情況比你想像的要少,通常來說,一個好的對象分層結(jié)構(gòu)應(yīng)當(dāng)允許絕大多數(shù)功能被子類特殊化,改進,或改變—這是面向?qū)ο缶幊痰幕A(chǔ)之一。一定的情況下需要private方法或變量,例如當(dāng)你確信你不想允許子類改變父類中的某個特定的部份。
11.抽象類:抽象方法是就像子類中一般的方法的占位符(占個地方但不起作用),它與一般方法不同—沒有任何代碼.如果類中存在一個或更多抽象方法, 那么這個類就成了抽象類.你不能實例化抽象類.你必須繼承它們,然后實例化子類.你也可以把抽象類看成是子類的一個模板.如果你覆寫所有的抽象方法, 子類就變成一個普通的類.如果沒有覆寫所有方法, 子類仍是抽象的.如果一個類中中包含有抽象方法(哪怕只有一個), 你必須聲明這個類是抽象的, 在class關(guān)鍵字前加上abstract.聲明抽象方法的語法與聲明一般方法不同.抽象方法的沒有像一般方法那樣包含在大括號{}中的主體部份,并用分號;來結(jié)束.12.接口:如果你建立了一個只有抽象方法的類,你就定義了一個接口(interface).為了說明這種情況, PHP中有interface 和implements關(guān)鍵字.你可以用interface來代替抽象類, 用implements來代替extends來說明你的類定義或使用一個接口.例如, 你可以寫一個myClass implements myIterface.這兩種方法可以依個人偏愛來選擇.12.1 如果接口中出現(xiàn)非抽象方法.會報錯
12.2 接口中的方法默認是public 型的.其它類型的修飾符,不能修飾接口中的抽象方法.12.3 即使接口中所有的方法都是抽象方法,也不能使用 abstract 修飾.也不能用final
12.4 即使接口中所有的方法都是抽象方法,在接口中,可以聲明靜態(tài)方法.12.5 在接口中可以有常量,e.g.:
interfaceUser{
const MAX_GRADE = 99;
function getName();
function setName($_name);
}
?>
13.Namespace關(guān)鍵字給一塊代碼命名.在這個代碼塊外部,腳本必須用操作符::加上命名空間的名稱來引用這個代碼塊.引用靜態(tài)的類成員也是用相同的方法.在命名空間內(nèi)代碼不需要聲明命名空間, 它本身就是默認的.這種方法比添加前綴的方法好.你的代碼可由此變得更加緊湊和可讀.你可能想知道是否可以建立分層的(嵌套的)命名空間.答案是不可以.但你可以在命名空間名稱后加上冒號, 你可以再次調(diào)用在名稱中不包含冒號的變量,函數(shù)和類.命名空間允許存在冒號,只要不是第一個字符和最后一個字符或接著另一個冒號.命名空間的名稱中的冒號對于PHP來說沒有任何意義, 但如果你用他們來區(qū)分邏輯上的區(qū)塊, 他們可以很好地說明你的代碼中的父子(parent-child)關(guān)系.14.__toString()打印對象會調(diào)用它的__toString方法.15.不能實例化的類
//
//當(dāng)__construct()為public時可以實例化
class A{
private function __construct(){}
}
$a = new A();//fail
?>
15.1
//static的方法留給外部訪問.
class A{
private function __construct(){}
static function getClassA(){
return “這里是后門,可以通過這里進入類內(nèi)部..”;
}
}
echo A::getClassA();
?>
15.2
//不能用new實例化的類.
//static的方法留給外部訪問.
//在方法內(nèi)部返回實例.
class A{
private function __construct(){
echo “this is construction
n”;
}
static function getClassA(){
$a = new A();
return $a;
}
}
// 看到這里確實返回的是 A 的實例.但不是同一個對象.$a1 = A::getClassA();
$a2 = A::getClassA();
echo “$a1 的類是 ”.get_class($a1).“ , $a2 是 ”.get_class($a1);if($a1 === $a2){
echo “
$a1 $a2 指向同一對象.”;
}else{
echo “
$a1 $a2 不是一個對象.”;
}
//this is construction
//this is construction
//$a1 的類是 A , $a2 是 A
//$a1 $a2 不是一個對象.?>
15.3
//不能用new實例化的類.
//static的方法留給外部訪問.
//在方法內(nèi)部返回實例.
//定義靜態(tài)屬性保證這個實例能被靜態(tài)方法調(diào)用.
//增加判斷部分.
class A{
private static $a = null;
private function __construct(){}
static function getClassA(){
if(null == self::$a){
self::$a = new A();
}
return self::$a;
}
}
// 看到這里確實返回的是 A 的實例.但不是同一個對象.$a1 = A::getClassA();
$a2 = A::getClassA();
echo “$a1 的類是 ”.get_class($a1).“ , $a2 是 ”.get_class($a1);if($a1 === $a2){
echo “
$a1 $a2 指向同一對象.”;
}else{
echo “
$a1 $a2 不是一個對象.”;
}
//$a1 的類是 A , $a2 是 A
//$a1 $a2 指向同一對象.?>