第一篇:php學習10位大師經驗
導讀:在Web開發世界里,PHP是最流行的語言之一,從PHP里,你能夠很容易的找到你所需的腳本,遺憾的是,很少人會去用“最佳做法”去寫一個PHP程序。這里,我們向大家介紹PHP的10種最佳實踐,當然,每一種都是經過大師們證明而得出的。
1.在合適的時候使用PHP——Rasmus Lerdorf
沒有誰比PHP的創建者Rasmus Lerdorf明白PHP用在什么地方是更合理的,他于1995年發布了PHP這門語言,從那時起,PHP就像燎原之火,燒遍了整個開發陣營,改變了互聯網的世界。可是,Rasmus并不是因此而創建PHP的。PHP是為了解決web開發者的實際問題而誕生的。
和許多開源項目一樣,PHP變得流行,流行的動機并不能用正常的哲學來進行解釋,甚至流行得有些孤芳自賞。它完全可以作為一個案例,一個解決各種Web問題的工具需求所引起的案例,因此當PHP剛出現的時候,這種工具需求全部聚焦到PHP的身上。
但是,你不能奢望PHP可以解決所有問題。Lerdorf是第一個承認PHP只是一種工具的人,并且PHP也有很多力所不能及的情況。
根據工作的不同來選擇合適的工具。我跑了很多家公司,為了說服他們部署和使用PHP,但是這并不意味著PHP對所有問題都適用。它只是可以一個解決大部分問題的front-end腳步語言。
作為一個web開發者,嘗試用PHP解決所有問題是不科學的,同時也會浪費你的時間。當PHP玩不轉的時候,不要猶豫,試用一下其他的語言吧。
2.使用多表存儲提高規模伸縮性——Matt Mullenweg
沒有人愿意質疑Matt Mullenweg在PHP方面的權威性,他開發了這個星球上最流行的blog系統,(依靠一個強大的社區力量支持): WordPress.創建Wordpress以后,Matt和他的團隊啟動了WordPress.com平臺,一個基于WordPress MU的免費blog站點。現在,Wordpress.com已經擁有大約400萬用戶,這些用戶每天提供超過 140,000篇的日志。
如果有人知道如何讓網站的規模伸縮自如,這個人一定是Matt Mullenweg。2006年的時候Matt對Wordpress的數據結構進行了前瞻性的改進,并且解釋了為什么
Wordpress MU對每個Blog使用獨立的MYSQL表格,而不是把所有的blog數據都塞進一個巨大的表格。
我們測試過這個方法,但是發現如果要擴展它的伸縮性,代價太高。如果用一個整體的數據結構,在大流量面前,你將會面臨服務器硬件的問題。在MU里面。用戶們都被分布到獨立的表格當中,并且可以輕易地組織起來。舉個例子,WordPress.com把用戶的數據分散存儲到4096個數據庫中,這些數據庫可以分散大規模的數據訪問,實現流量和壓力分流。
數據表的可遷移性讓代碼(blog)可以運行得更快,并且讓系統具備更強的伸縮性。依靠強大的緩存策略和靈活的數據庫運用策略,Matt向人們展示了時下最流行的Facebook和Wordpress.com都可以在PHP下穩定運行,并且處理驚人的訪問量。
3.千萬不要相信用戶——Dave Child
Dave Child是Added Bytes(previously ilovejackdaniels.com)網站的核心人物,這個網站以他出色的《cheat sheets for many programming languages》而聞名。Dave為很多英國的公司服務,并且已經在編程世界里樹立起相當的權威。
Dave為PHP開發者提供了很多深謀遠慮的建議,并總結成了《writing secure code in PHP》:千萬不要相信你的用戶,他們甚至可能會傷害你。
有一條Web開發的基本原則,我重復多少遍都覺得不夠,那就是:千萬不要相信你的用戶,同時要假設你網站中的每個數據單元都是從用戶那里收集來的惡意代碼。很多時候,你必須用javascript在客戶端檢驗表單提交過來的內容,如果你習慣了如此,那么,這是一個好習慣。如果安全性對你來說很重要,這就是最重要最需要學習的原則。
Dave目前正致力于為它的《Writing Secure PHP》系列書籍整理實例,書的最后他說:
最后,變得偏執一點吧。除非你認為你的站點永遠不會受到攻擊,否則就正視所有的問題,當問題真正發生的時候,你的情況會變得很糟。你需要把每個用戶都看成會帶來一場攻防站的黑客,想盡一切辦法來保護站點的安全,同時想好相應問題的解決方案。
4.多使用PHP緩存——Ben Balbo
Ben Balbo開發了Site Point,一個為developers和designers提供指導的網站。他是墨爾本PHP開發和開源俱樂部的成員,因此他對PHP有一定的了解,同時對PHP caching有一定的想法和經驗。
如果你擁有一個訪問量很大,但更新并不頻繁的站點(比如blog,基于某種CMS),或許它需要進行一些改造,這些改造不會花費太多的時間,但是對性能有突出的貢獻。如果
要為一個復雜/更新頻率很快的站點建立緩存機制,過程可能會很曲折,但是好處也是顯而易見的。
PHP緩存技術有很多種,Ben為我們推薦了如下一些:
緩存函數的運行結果
設置過期時間
緩存IE下載的文件
模板緩存技術
Cache_Lite
由于PHP作為動態語言的特性,緩存機制對于更新頻率并不快的站點來說非常重要。
5.使用IDE, Templates和Snippets加速PHP開發——Chad Kieffer
當Chad Kieffer從UI設計和數據庫優化的工作中抽身出來的時候,他會在他的博客2 tablespoons上分享很多技術經驗。由于Chad多方面的全面發展,他經常可以發現其他程序員不能發現的問題,并形成相關經驗,尤其是他開發網站的方法。他參與了網站開發的各個環節,因此他的建議對于提高網站開發的大局觀非常有用。
Chad認為使用Eclipse PDT(Eclipse’s PHP development package)這樣的IDE,同時使用一些模板技術和開源項目可以有效地提高PHP的開發速度。
緊湊的計劃,長長的to do lists以及deadlines讓開發人員非常苦悶。不過有些功能,比如Eclipse Templates,可以有效減少編碼的時間和出錯的幾率。
通常來說,任何項目都可以自動化,自動化程度越高,你完成項目的時間就越短。花時間來開發使用頻率很高的框架和模板,將會節省你以后更多時間。同時,使用像Eclipse and the PDT package這樣的IDE,你會發現效率得到明顯提高,IDE可以自動閉合,補全分號并且可以在本地debug。
6.利用好PHP的過濾函數——Joey Sochacki
或許Joey Sochacki并不像Matt Mullenweg那樣有名,但他也是一個經驗豐富的開發者,并且通過他的博客Devolio分享了很多技術經驗
Joey發現在編寫php代碼的過程中有很多地方需要進行過濾,但卻并沒有太多的coder關注php的內置過濾函數。
過濾數據是我們經常需要做的事情,但是很多功能豐富的PHP內置過濾函數卻不為人知。使用類似filter_* 的PHP內置函數,我們幾乎可以處理所有的過濾任務,包括數據類型驗證/URL/email和IP地址驗證/特殊字符處理等等。
過濾是一件復雜的事情,但是我相信joey的發現會給你很多啟發,讓你認識到PHP強大的過濾功能。
7.使用PHP框架——Josh Sharp
對于是否應該使用Zend,、CakePHP、Code Igniter或者其他PHP框架,一直存在著很多爭議,但是在Web開發者的心中,他們有自己衡量的標準。
Josh Sharp自己創建了一家提供面包和黃油服務的網站,因此他對于使用PHP框架來開發網站有一定的經驗。他認為使用一個PHP框架來進行項目開發(use a PHP
framework),可以有效地節省時間,并且減少出錯的幾率。為什么?因為他覺得PHP實在是太好上手了。
PHP的易于使用有時候也有缺陷,因為并不嚴格的語法,經常會導致很多錯誤代碼的誕生。但如果使用一個PHP框架,出錯的幾率就會大大減少。
PHP框架可以讓你的代碼結構更加規范,并且節省大量時間。
8.不要使用PHP框架——Rasmus Lerdorf
與Josh的觀點恰恰相反,PHP的鼻祖Rasmus Lerdorf卻認為最好不要使用PHP框架,為什么?因為不基于框架的PHP性能更好。Rasmus在Drupalcon 2008的演講上,用“Hello World”的例子來對比了一些框架PHP和簡單PHP之間的性能,結果顯示框架PHP的性能要遠遠落后。
9.使用批處理——Jack D.Herrington
Jack Herrington對PHP世界并不陌生,并且為大名鼎鼎的IBM developerWorks貢獻過超過30篇的專搞,同時出版過《PHP Hacks》的書,因此他是一個真正的專家。
Herrington推薦使用批處理和Cron來代替那些可以運行在后臺的程序腳步,Web用戶并不愿意在線等待你的處理過程,所以有些事情更適合放到后臺來處理。
誠然,在某些情況下,這有點大材小用了,但是你可以清楚地看到,使用Cron, MySQL, PHP面向對象的方法以及Pear::DB這些便捷的工具來創建一個批處理工具并不是一件復雜的事情。
Jack認為使用cron, PHP和MySQL在后臺處理一些任務,比起多進程的業務邏輯要劃算得多。
兩種方法我都嘗試過,我認為Cron非常符合”Keep It Simple, Stupid”(KISS)的原則,它讓后臺處理變得簡單。與多進程的業務邏輯相比,它沒有內存溢出的風險。你可以創建一個簡單的批處理腳本,并且在cron中運行,這個腳本會定時檢查是否有任務需要處理,處理完之后就會自動退出,因此你不用擔心是否有進程卡殼,或者陷入死循環。
10.及時啟用錯誤報告——David Cummings
David Cummings有一個專門提供CMS軟件服務的公司,并且獲得過幾次獎,他有非常豐富的PHP開發經驗。David曾經寫過《two PHP tips he wished he’d learned in the beginning》,其中一點就是:及時啟用錯誤報告,這會節省大量的時間。
我告訴人們,最重要的事情就是最大程度地開啟PHP的錯誤報告,為什么?因為PHP可能會隱藏很多小問題:
變量沒有預定義
在代碼片段中引用了不可用的變量
使用了未定義的常量這些因素看起來并不是什么大事,除非你在使用面向對象的方法編寫一些類庫。通常,關閉錯誤報告將可能使你付出更大的成本來維護你的代碼。
錯誤報告可以幫你輕易地找到代碼的問題所在,如果錯誤報告的等級夠高,細微的錯誤都能被立即發現,幫助你節省整體debug的時間。
第二篇:php學習經驗
感覺要學好一門編程語言,關鍵要有對比,多看看別人的代碼,多寫代碼。
我的php是自學的,所以自學的角度來說。
一開始都是看書,在選書的過程中要根據自己的情況,沒有其他編程語言基礎的,或者只有大學那點C語言基礎的,都建議看國內的作者寫的書,國外寫的一般涉及面較廣,相對難度較大,不太適合初學者。
這個過程,可以看視頻加快學習進度,推薦的入門視頻lamp兄弟連和php100的視頻。一定要經常上機練手。多多加相關的qq群,去那些php技術的論壇,去看看他們具體談論的話題,看看自己薄弱之處。當你看完一本,這種書的內容的結尾一般都是用smarty或者zend framework做一個小項目,就不必在看書了(國內的書都是一個套路,選一本最厚的看,其他的以后都不用再看了),可以先做一個功能齊全的新聞發布系統,在實踐中鞏固書本的知識。
基本的語法和面向對象的內容看完之后。必須了解一下php的框架,建議初學者先看看thinkphp,比較簡單,之后再看看zend framework這類比較大的框架。這一步不需要精通而只要初步了解一下MVC和面向對象編程的知識,之后在學習中,不斷加深。
當這些做完,你對做web開發有個大概印象時。就要看看別人成熟的產品,php的cms,像dede,ecshop,wordpress,joomla,drupal等,抓一個自己認為適合自己現階段最適合學的,也是視頻和書本輔助的,好像joomla,drupal都有實體書了。學習別人的cms,能讓學到很多技術和思想。但了解別人代碼的意思,這個過程是痛苦的,特別是對很多基礎不牢的,但這是必須的,和別人對比才能進步。php就是這樣,你沒有任何技巧都可以搭建出一個網站。但這樣的網站根本就不可作為商業用途。
之后,就要在工作崗位上提升自己,所以先要找一份工作崗位,現在php還是很熱門的(以后我不敢保證),這種工作挺好找的,只要你能做出一個像樣的新聞發布系統,一般的小公司會要的,但是工資比較低,可能是一千來塊。要學好一門語言,都是要有相應的工作經驗的,不太可能是自己在家搗鼓搗鼓就能成為高手的。在工作中跟別人相互學習,在工作不斷地解決問題,能讓你不斷進步。
在學習中一些問題也要加強,你可以看看招聘中他們所寫的要求比如緩存,靜態化等等,比較實用的東西,你是否掌握。還有php高手都是多面手,linux,mysql甚至其他語言都是精通的。
第三篇:PHP學習總結的一些經驗
其實我也是一樣很新的新手,上PHP100學習視頻并在論壇里學習其實也就是一個月前的事.雖然早在8月份花過一個星期看完w3school的PHP教 程,了解了許多PHP知識.但始終是缺乏一個與眾多朋友學習和交流的平臺,所以一下子在幾周后又把PHP又忘得七七八八了,有幸在10月尾了解到了 PHP100視頻和論壇,不僅可以系統地學習下PHP,更可以和很多朋友一起學習成長這更是件好事.在php100視頻中學到了許多,而 論壇中看帖和回帖也更讓我鞏固了學習的知識并讓我學到了很多,這不僅不會讓我又把PHP知識快速忘記(因為工作中用是ASP,而PHP不會在工作中用,所 以忘得快),反而在取得進步的同時,我也能幫助一些人,這也是一樣是學習勝利的過程,我喜歡并享受其中.以下是我上論壇以來的回復總結,將不斷持續總結.希望有利于與我一樣的新手一起成長.首先來個,題前語:
任何的學習,都需要自信,再新的新手也應該拋棄心中的恐懼,有時關鍵在于你心平下來,踏入學習后,你將慢慢化開迷惑,獲得信心,贏取自信!讓我們共同進步.----------
==========
Undefined index問題
是運行的時候出現類似:Notice: Undefined index: action in D:wampwww.tmdps.cn/read.php?tid=15843&page=1#138857
是 php 配置的事情
這個錯誤是因為 php 頁面中的變量沒有初始化而導致的!
可以通過設置PHP.INI搞好,也可以在變量前面 加上一個 @ 就可以解決這個地方的問題了!
如這里指示第三行
Notice: Undefined index: action in D:wampwww.tmdps.cn/2009/0617/6463.php
----------
==========
遇到頁面明確提示你錯誤的,并有顯示如何錯的,建議先把語句復制部分重點詞句或全部語句到百度或
google,更快速讓在你排查錯誤找到方法.其實這也是一種高效有益的學習方法,畢竟在工作中,遇到些沒
遇過的新問題,有時都需要借助網上的資源給自己靈感和助力,本人就一天不下幾十次用百度搜索.如程序中遇到諸如含提示:
顯示的錯誤為:
Parse error: syntax error, unexpected $end in D:wampwwwtestlist.php on line 21
那么你就可以把 syntax error, unexpected $end 作為關鍵詞到百度搜索,那么你即刻可以得到助力甚
至答案.以上那句舉例的錯誤是因為:短標簽沒有打開.解決方法是打開php.ini把short_open_tag短標簽
打開,重啟服務即可
----------
==========
提示的時候,有時順便把代碼帖上帖子是必要的,這樣才能快速地在別人的幫助下問題得到解決
----------
==========
對單引號和雙引號有迷惑,大家可以看這篇文章解下惑:
----------
==========
在調試程序時,經常要用到echo 你的sql語句來,檢查傳值后,sql變成了什么樣的情況,以便排查錯誤.----------
==========
向數據庫表插入數據
INSERT INTO 語句用于向數據庫表添加新紀錄。
語法
INSERT INTO table_name VALUES(value1, value2,....)--此種情況是需要按你表中所有字段的順
序全部value填上!
您還可以規定希望在其中插入數據的列:
INSERT INTO table_name(column1, column2,...)VALUES(value1, value2,....)--張老師明確建
議用此種方法!
----------
==========
有人疑惑,$_POST或$GET取得時的引號問題:其實是要不要引號,單引號或雙引號都是沒有問題的.如, $_POST[name]和$_POST['name']和$_POST[“name”]都是在windows下一樣的,在linux下情況具體沒
用過,不知道,還望高手告知.----------
==========
針對多數人的留言板課程中許多問題(如,insert into存不進數據問題)的總結:
1.檢查你數據庫表的結構是否正確,如id是否設為自增
2.insert into語句是否正確,如單詞是否正確,insert into...values...3.是否將`(反斜點,在1鍵前)號和'(引號)是否使用位置正確,正確的方法是:`應該放在表和字段邊,而'
是放在字符串型(或者說是非數字型)的值邊上
4.檢查你的各語句,是否在結尾將分號(;)正確結束
5.檢查你的submit表單項的name值是否你判斷的取值,如
value=“提交”>時,你的判斷是否提交應是 if($_POST[submit]){...};當你的是
type=“submit” name=“othername” value=“提交”>時,你的判斷是否提交應是 if($_POST
[othername]){...}
6.檢查你的$_POST是否大寫,當你寫成$_post是不行的,因為$_GET,$_POST等,都是PHP系統環境的硬性用
法
7.用echo 輸出你的sql檢查傳值情況
8.檢查你的短標簽是否打開
9.注意你的method是get還是post
10.檢查你的表單相關單詞或引號是否書寫正確.很多莫名其妙的問題,多是細節問題.要小心查對才能看
出來.----------
sql語句中表名和字段名在windows的情況下是可以不加小斜點(鍵盤左上角1鍵前的那個點鍵)的,但聽說
在linux中不加會引出些問題,兼容的寫法是有小斜點.如:windows下:
$sql=“select * from table ”
和
$sql=“select * from `table` ”
是效果一樣的再次重點提示是:
`(反斜點,在1鍵前)號和'(引號)使用位置,正確的方法是:`應該放在表和字段邊,而'是放在字符串型(或
者說是非數字型)的值邊
----------
==========
php100第十三講的page.PHP中的翻頁顯示信息有問題的解決方法:
因為頁面沒有取值到URL值的page,所以在函數內的page會一直是1,所以會一直是第1頁的數據
解決方法,就是在調用函數前把page取得就好了!函數里會把取到的page值作為全局變量傳入函數使用的了!
include(“conn.php”);
$nump=mysql_query(“SELECT * FROM `test`”);
$total=mysql_num_rows($nump);
//調用pageft(),每頁顯示10條信息(使用默認的20時,可以省略此參數),使用本頁URL(默認,所
以省略掉)。
$page=$_GET[page];//------------------------------在這里加入這行就OK了!
_PAGEFT($total,5);
echo $pagenav;
$query=mysql_query(“SELECT * FROM `test` limit $firstcount,$displaypg ”);//---見下面 while($row=mysql_fetch_array($query)){
echo “
”.$row[name].“ | ”.$row[sex];
}
以上的調試方法,其實你只要學下張老師把sql語句輸出來看下,你就知道是怎么回事了!
echo $sql=“SELECT * FROM `test` limit $firstcount,$displaypg ”;
$result=mysql_query($sql);
----------
==========
分頁有問題的朋友,不妨看下如下:
關于分頁,這有一篇論壇朋友的學習心得,學習下,你也許有所得:
另有一篇本人轉發上去的分頁講解:
----------
==========
關于:mysql_fetch_array
mysql_fetch_array 調用一次會把指針指向的記錄放入數據,并指向下一條記錄
======================....回復的太多了,總結又需較多時間,暫時總結到此,總結未完,待續.....
第四篇:PHP學習推薦
PHP學習推薦
PHP,是英文超級文本預處理語言Hypertext Preprocessor的縮寫。PHP 是一種 HTML 內嵌式的語言,是一種在服務器端執行的嵌入HTML文檔的腳本語言,現在越來越多的人加入到了php的大家庭中,其中很多人只是淺嘗輒止,為何會如此呢?最大的障礙莫過于學習的過程枯燥乏味,從而失去學習興趣,那么小編就自己的經驗來說說怎樣學習php吧。
學習方法之視頻教程
相對于讀書來說,我更喜歡看視頻學習,可能小編我對影像比文字記憶更加深刻吧。每看完一個視頻教程,我都會閉上眼睛休息一會,把剛才看的內容消化消化,然后再開始練習剛才看過的內容,盡可能不邊看邊做,因為這樣學的快同樣也忘得快,如果實在想不起來的話,可以再打開教程看一遍,切記不可囫圇吞棗,好高騖遠,要穩扎穩打,把你看過的教程切切實實的記在心里。只有一步一個腳印,你的學習之路才能走的更遠,否則的話,你走的越遠,越會覺的道路是如此艱辛,或許你就會放棄學習。那么都有哪些視頻教程能幫我們學習php呢,小編我就為大家介紹幾個吧:
php100
LAMP兄弟連
李炎恢的php
學習方法之看書: 1.《PHP與MySQL程序設計(第4版)》
2.《PHP Web 2.0 開發實戰》
3.《PHP高級程序設計:模式、框架與測試》
4.《PHP 5 高級應用開發實踐》
5.《細說php》
學習過程中不要死記語法,要多動手,多練習,當你遇到問題的時候,首先嘗試自己解決。多用google,baidu,網絡是一個大知識庫,是最好的老師,你遇到的問題,別人也遇到過,多去搜索一下吧.多閱讀別人的源代碼,要看懂別人的設計思想,不斷融為已用.
第五篇:快速學習php
Php參考手冊介紹
html css 試題
試題1: 請編寫如下一個html頁面
試題2: 請使用(div+css)盒子經典布局編寫如下界面
試題3: 請使用div+css 盒子布局模式編寫sohu首頁面布局
javascript試題
試題1:
請按下面內容編寫一個頁面,點頁面里的“全選”時,能選中或清除上面的所有水果。選擇你喜歡的水果:
□蘋果
□桔子
□香蕉
□葡萄
□桃子
□全選/全不選
試題2: 編寫一個簡單顯示和隱藏效果如圖所示:
試題3:
請使用javascript相關函數對一個url【http://www.tmdps.cn
(2)PHP函數
PHP函數的基本介紹、如何自定義函數、PHP頁面調用函數、require()、require_once()、include()和include_once()的區別、從內存分析PHP函數調用過程、函數使用需要注意的細節、函數值傳遞和引用傳遞的區別。
函數是我們PHP編程最重要的一個知識點,也是進行模塊化編程的基礎,掌握好函數可以提高代碼的復用性、可讀性和可維護性。
(3)數組、排序和查找
數組的基本概念、數組的引用方式、數組引用陷阱、與PHP數組相關的函數(count、is_array、print_r、explode等)遍歷數組的三種方式、刪除數組元素和數組運算符、數組使用細節總結、內部排序法和外部排序法介紹、冒泡排序和快速排序、選擇排序和插入排序、順序查找和二分查找、二維數組介紹和使用。
依據我的經驗,我們去找工作的時候,一定會一道關于排序和查詢的題,最常見的問題是: 請你寫出冒泡排序法,并使用二分查找來查找一個數。在項目開發中,數組是銜接變量和函數的重要數據類型,在MVC開發中,往往需在控制器中將數組分配給視圖去顯示,在算法中,數組也是變化最為靈活的。
(4)面向對象編程
面向對象編程基本概念、類和對象的關系、如何定義類、成員屬性(變量)、如何創建對象實例及如何訪問對象屬性、對象在內存中存在的形式、棧、堆、全局區、常量區和代碼區的關系、成員方法(函數)及使用細節、構造方法(函數)、默認構造方法(函數)、this的基本概念和使用、析構方法(函數)、PHP的對象垃圾回收器、靜態變量(類變量)的概念和使用、靜態方法(類方法)的概念和使用、面向對象編程的三大特征介紹、面向對象編程-封裝、面向對象編程-繼承、面向對象編程-多態、訪問控制修飾符(public、protected、private)、方法重載(overload)、方法重寫(override)、方法重載(overload)和方法重寫(override)的比較、PHP魔術函數(__set __get __construct __destruct __call等)和魔術常量(__LINE__ , __FILE__ ,__FUNCTION__等)、抽象類(abstract class)的概念和使用接口(interface)的概念和使用、接口編程和繼承的區別、關鍵字final的使用、常量關鍵字const 的作用和使用注意事項、面向對象編程之強大的反射機制、面向對象編程之動態代理。
面向對象編程已經成為PHP編程的主流,面向對象編程讓程序變得更加強大和靈活,更利于項目的開發和維護。關于面向對象編程 在 傳智播客 php視頻教程 61講-78講,看看什么才是真正的PHP面向對象思想,什么是真正的OOP。
(5)錯誤處理和異常處理
錯誤處理的基本概念、PHP處理錯誤的三種方式介紹、使用die()進程錯誤處理、自定義錯誤和錯誤觸發器、錯誤日志、錯誤級別介紹、PHP異常處理的基本介紹、PHP異常處理(try throw catch)、自定義異常、如何設置頂級異常處理器、異常使用的規則。
在編寫php web 應用程序時,錯誤處理是一個重要的部分。如果您的代碼缺少錯誤檢測編碼,那么程序看上去很不專業,也為安全風險敞開了大門。所以大家需要清楚在PHP編程中如何對錯誤和異常進行有效的處理,從而保證程序的安全和健壯。
(6)預定義超全局數組
預定義超全局數組-基本概念、$_GET、$_POST、$_REQUEST、$_SERVER、$_ENV、$_FILES、$_COOKIE、$_SESSION、$GLOBALS、$_GET 使用陷阱(sql注入和中文亂碼問題)(7)cookie和session 什么是會話、cookie的基本概念、cookie的curd操作、cookie重要的api介紹、cookie運行原理圖解、cookie的實際運用(顯示用戶上次訪問時間、顯示用戶上次瀏覽過的商品、)、cookie使用的注意事項、session數據存放的位置和形式、session的curd操作、session運行原理圖解、session實際案例-在線購物車、IE禁用Cookie后的session處理方案、session防止用戶非法入侵、session配合驗證碼使用、php.ini 中關于cookie和session配置說明(重點,難點)、自定義會話處理器、Session和Cookie的區別。
Cookie(小甜餅)是客戶端技術,服務器把每個用戶的數據以cookie的形式 寫給用戶各自的瀏覽器。當用戶使用瀏覽器再去訪問服務器中的web資源時,就會帶著各自的數據去。
Session是服務器端技術,利用這個技術,服務器在運行時可以為每一個用 戶的瀏覽器創建一個其獨享的session文件,當用戶再去訪問服務器中的其它web資源時,可以從用戶各自的session 中取出數據為用戶服務。Session和Cookie是最重要的用戶行為跟蹤技術,尤其是電商,sns項目中運用廣泛,因此是我們學習的重點和難點,也是面試筆試的重點。關于cookie和session大家可以參考傳智播客 php視頻教程 114-121講
(8)PHP文件編程
文件及文件編程是什么、文件流的基本概念、文件的操作方式、PHP文件編程函數匯總介紹、最常用的13個文件函數、使用文件完成網站計數器、文件上傳下載操作-mini版音樂共享網、無限級文件掃描器。
文件最主要的作用就是保存數據,它既可以保存一張圖片,也可以保存視頻 ,聲音...,本章節要求同學們掌握文件的各種操作和上傳下載,動態創建和刪除目錄,文件和無限級掃描文件等,掌握好這些知識點對我們項目開發非常重要。
(9)PHP繪圖技術
php繪圖坐標系、繪圖步驟說明、繪圖快速入門、繪圖最常用的函數、繪圖技術的實際運用—人口分布餅狀統計圖、專業的報表開發--JpGraph、JpGraph的安裝和配置、JpGraph實際應用-網民支持情況統計圖、JpGraph中文亂碼處理。
如果你使用過財務軟件,那你一定看見過各種對財務數據進行統計和分析 的圖表,可能是表格,也可能是餅狀圖、柱狀圖、曲線圖..,簡單的說,就是使用圖表動態顯示數據。而這些圖表的顯 示都要使用到PHP的繪圖技術,繪圖技術要求熟練的使用PHP的繪圖函數完成項目的需求。能開發一些統計圖,非常有實用價值。比如:
推薦學習傳智播客 php視頻教程
下載地址 http://php.itcast.cn
如何檢驗自己的學習效果,看看下面的一些面試題 , 看看能完成多少? 如果能正確完成80%,說明這個階段學到還不錯。
練習1: 簡述echo(),print(),print_r()的區別?
練習2: 說出PHP的超級全局變量數組,共九種
練習3: 如何在一個php函數中使用具有全局屬性的變量,說出兩種方式
練習4: 三個小題: 4.1.跳水比賽,8個評委打分。運動員的成績是8個成績取掉一個最高分,去掉一個最低分,剩下的6個分數的平均分就是最后得分。使用一維數組實現打分功能。
4.2.請把打最高分的評委和最低分的評委找出來。4.3.找出最佳評委和最差評委。最佳評委就是打分和最后得分最接近的評委。最差評委就是打分和最后得分相差最大的。
練習5: include和require都能把另外一個文件包含到當前文件中,他們有什么區別?Include和include_once又有什么區別?
練習6: 寫出一個能創建多級目錄的PHP函數
練習7: 寫出一個函數,能遞歸列出某個目錄下的所有文件夾和文件名.練習8: 在防止SQL注入的時候,通、會把單引號、雙引號等轉義,需要用到哪個函數 練習9: 寫出插入排序法和快速排序法代碼
練習10: 二分查找的原理是什么? 請寫出二分查找函數
練習11: 寫出php的public、protected、private三種訪問控制模式的區別 練習12: 請寫出一個完整的嚴謹的單例模式
練習13: __set 和 __get 魔術函數是做什么的,在什么時候被觸發 練習14: 如何防止對象克隆, 對象克隆會復制 static屬性嗎? 練習15: 說說strip_tags的作用和用法?
練習16: 如果需要原樣輸出用戶輸入的內容,在數據入庫前,要用哪個函數處理? 練習17: 如何控制多個進程去并發刪除,插入和更新數據庫的某張表? 練習18: PHP的安全模式和非安全模式的區別
(轉載請注明 傳智播客php學院-韓順平http://php.itcast.cn)
當然,有些學員還給我寫信說這樣一個問題,如何去檢驗第一階段: PHP前端網頁開發基礎,學習情況, 學習到怎樣的水平,再學習下一個階段比較好, 大家可以做一下下面的測試題,如果你能將下面的題都完成,說明你已經有一定基礎,可以學習下一個階段:(注意:需要獨立完成)
html css 試題
試題1:
請編寫如下一個html頁面
試題2:
請使用(div+css)盒子經典布局編寫如下界面
試題3:
請使用div+css 盒子布局模式編寫sohu首頁面布局
javascript試題
試題1:
請按下面內容編寫一個頁面,點頁面里的“全選”時,能選中或清除上面的所有水果。選擇你喜歡的水果:
□蘋果
□桔子
□香蕉
□葡萄
□桃子
□全選/全不選
試題2: 編寫一個簡單顯示和隱藏效果如圖所示:
試題3:
請使用javascript相關函數對一個url 【http://www.tmdps.cn、163.com 等)
練習5:計算一個js整數數組的所有元素的和。
練習6:計算一個字符串 , 比如 “abcde中國,你好hello,12345”, 中含有多少個中文字,多少個字母,多少個數字?
練習7:將一個js字符串數組的元素的順序進行反轉。(“3”,“a”,“8”,“haha”)轉換為(“haha”,“8”,“a”,“3”)。提示:第i個和第length-i-1個進行交換。不能使用js的reverse()函數。
好,現在我們談談第二個階段應該學習什么內容,如何學習的問題。第二階段 PHP核心編程
(1)PHP基本語法加強 Apache--directory配置段、一個IP和多個域名綁定的兩種方式、HTTP協議入門介紹、Apache邏輯組件介紹、Apache生命周期、PHP運行之時序圖、PHP數據類型加強、PHP各種運算符加強、PHP三大流程控制加強、位運算(按位與、按位或、按位異或、按位非、位左移、位右移)、二進制(原碼、反碼、補碼)、PHP版本在線貸款計算器。
這里,我想說明一下: PHP基礎語法看似簡單,但是也不可大意,有些PHP程序員工作了2年,對PHP運行的原理都不清楚,對Apache的一些重要調優配置也不了解,這樣的程序員,在公司是不行的,很難得到提升。所以就一直是一個編碼工人,薪資也上不去。
比如面試中經常問到: PHP中一個整數的范圍是多少, 小數的能表示的范圍是多少? 再比如如何在Apache中配置一個404錯誤頁面,如何給一個主機配置一個域名,具體怎樣操作?這樣一些基礎的問題都必須在這個階段搞定。推薦大家看 傳智播客php視頻教程 23講-45講 ,有詳細到位的講解。
(2)PHP函數
PHP函數的基本介紹、如何自定義函數、PHP頁面調用函數、require()、require_once()、include()和include_once()的區別、從內存分析PHP函數調用過程、函數使用需要注意的細節、函數值傳遞和引用傳遞的區別。
函數是我們PHP編程最重要的一個知識點,也是進行模塊化編程的基礎,掌握好函數可以提高代碼的復用性、可讀性和可維護性。
(3)數組、排序和查找 數組的基本概念、數組的引用方式、數組引用陷阱、與PHP數組相關的函數(count、is_array、print_r、explode等)遍歷數組的三種方式、刪除數組元素和數組運算符、數組使用細節總結、內部排序法和外部排序法介紹、冒泡排序和快速排序、選擇排序和插入排序、順序查找和二分查找、二維數組介紹和使用。依據我的經驗,我們去找工作的時候,一定會一道關于排序和查詢的題,最常見的問題是: 請你寫出冒泡排序法,并使用二分查找來查找一個數。在項目開發中,數組是銜接變量和函數的重要數據類型,在MVC開發中,往往需在控制器中將數組分配給視圖去顯示,在算法中,數組也是變化最為靈活的。
(4)面向對象編程
面向對象編程基本概念、類和對象的關系、如何定義類、成員屬性(變量)、如何創建對象實例及如何訪問對象屬性、對象在內存中存在的形式、棧、堆、全局區、常量區和代碼區的關系、成員方法(函數)及使用細節、構造方法(函數)、默認構造方法(函數)、this的基本概念和使用、析構方法(函數)、PHP的對象垃圾回收器、靜態變量(類變量)的概念和使用、靜態方法(類方法)的概念和使用、面向對象編程的三大特征介紹、面向對象編程-封裝、面向對象編程-繼承、面向對象編程-多態、訪問控制修飾符(public、protected、private)、方法重載(overload)、方法重寫(override)、方法重載(overload)和方法重寫(override)的比較、PHP魔術函數(__set __get __construct __destruct __call等)和魔術常量(__LINE__ , __FILE__ ,__FUNCTION__等)、抽象類(abstract class)的概念和使用接口(interface)的概念和使用、接口編程和繼承的區別、關鍵字final的使用、常量關鍵字const 的作用和使用注意事項、面向對象編程之強大的反射機制、面向對象編程之動態代理。
面向對象編程已經成為PHP編程的主流,面向對象編程讓程序變得更加強大和靈活,更利于項目的開發和維護。關于面向對象編程 在 傳智播客 php視頻教程 61講-78講,看看什么才是真正的PHP面向對象思想,什么是真正的OOP。
(5)錯誤處理和異常處理
錯誤處理的基本概念、PHP處理錯誤的三種方式介紹、使用die()進程錯誤處理、自定義錯誤和錯誤觸發器、錯誤日志、錯誤級別介紹、PHP異常處理的基本介紹、PHP異常處理(try throw catch)、自定義異常、如何設置頂級異常處理器、異常使用的規則。
在編寫php web 應用程序時,錯誤處理是一個重要的部分。如果您的代碼缺少錯誤檢測編碼,那么程序看上去很不專業,也為安全風險敞開了大門。所以大家需要清楚在PHP編程中如何對錯誤和異常進行有效的處理,從而保證程序的安全和健壯。
(6)預定義超全局數組
預定義超全局數組-基本概念、$_GET、$_POST、$_REQUEST、$_SERVER、$_ENV、$_FILES、$_COOKIE、$_SESSION、$GLOBALS、$_GET 使用陷阱(sql注入和中文亂碼問題)
(7)cookie和session 什么是會話、cookie的基本概念、cookie的curd操作、cookie重要的api介紹、cookie運行原理圖解、cookie的實際運用(顯示用戶上次訪問時間、顯示用戶上次瀏覽過的商品、)、cookie使用的注意事項、session數據存放的位置和形式、session的curd操作、session運行原理圖解、session實際案例-在線購物車、IE禁用Cookie后的session處理方案、session防止用戶非法入侵、session配合驗證碼使用、php.ini 中關于cookie和session配置說明(重點,難點)、自定義會話處理器、Session和Cookie的區別。
Cookie(小甜餅)是客戶端技術,服務器把每個用戶的數據以cookie的形式 寫給用戶各自的瀏覽器。當用戶使用瀏覽器再去訪問服務器中的web資源時,就會帶著各自的數據去。Session是服務器端技術,利用這個技術,服務器在運行時可以為每一個用 戶的瀏覽器創建一個其獨享的session文件,當用戶再去訪問服務器中的其它web資源時,可以從用戶各自的session 中取出數據為用戶服務。Session和Cookie是最重要的用戶行為跟蹤技術,尤其是電商,sns項目中運用廣泛,因此是我們學習的重點和難點,也是面試筆試的重點。關于cookie和session大家可以參考傳智播客 php視頻教程 114-121講
(8)PHP文件編程
文件及文件編程是什么、文件流的基本概念、文件的操作方式、PHP文件編程函數匯總介紹、最常用的13個文件函數、使用文件完成網站計數器、文件上傳下載操作-mini版音樂共享網、無限級文件掃描器。
文件最主要的作用就是保存數據,它既可以保存一張圖片,也可以保存視頻 ,聲音...,本章節要求同學們掌握文件的各種操作和上傳下載,動態創建和刪除目錄,文件和無限級掃描文件等,掌握好這些知識點對我們項目開發非常重要。
(9)PHP繪圖技術
php繪圖坐標系、繪圖步驟說明、繪圖快速入門、繪圖最常用的函數、繪圖技術的實際運用—人口分布餅狀統計圖、專業的報表開發--JpGraph、JpGraph的安裝和配置、JpGraph實際應用-網民支持情況統計圖、JpGraph中文亂碼處理。如果你使用過財務軟件,那你一定看見過各種對財務數據進行統計和分析 的圖表,可能是表格,也可能是餅狀圖、柱狀圖、曲線圖..,簡單的說,就是使用圖表動態顯示數據。而這些圖表的顯 示都要使用到PHP的繪圖技術,繪圖技術要求熟練的使用PHP的繪圖函數完成項目的需求。能開發一些統計圖,非常有實用價值。比如:
如何檢驗自己的學習效果,看看下面的一些面試題 , 看看能完成多少? 如果能正確完成80%,說明這個階段學到還不錯。
練習1: 簡述echo(),print(),print_r()的區別?
練習2: 說出PHP的超級全局變量數組,共九種
練習3: 如何在一個php函數中使用具有全局屬性的變量,說出兩種方式
練習4: 三個小題: 4.1.跳水比賽,8個評委打分。運動員的成績是8個成績取掉一個最高分,去掉一個最低分,剩下的6個分數的平均分就是最后得分。使用一維數組實現打分功能。4.2.請把打最高分的評委和最低分的評委找出來。
4.3.找出最佳評委和最差評委。最佳評委就是打分和最后得分最接近的評委。最差評委就是打分和最后得分相差最大的。
練習5: include和require都能把另外一個文件包含到當前文件中,他們有什么區別?Include和include_once又有什么區別?
練習6: 寫出一個能創建多級目錄的PHP函數
練習7: 寫出一個函數,能遞歸列出某個目錄下的所有文件夾和文件名.練習8: 在防止SQL注入的時候,通、會把單引號、雙引號等轉義,需要用到哪個函數
練習9: 寫出插入排序法和快速排序法代碼
練習10: 二分查找的原理是什么? 請寫出二分查找函數
練習11: 寫出php的public、protected、private三種訪問控制模式的區別
練習12: 請寫出一個完整的嚴謹的單例模式
練習13: __set 和 __get 魔術函數是做什么的,在什么時候被觸發
練習14: 如何防止對象克隆, 對象克隆會復制 static屬性嗎?
練習15: 說說strip_tags的作用和用法?
練習16: 如果需要原樣輸出用戶輸入的內容,在數據入庫前,要用哪個函數處理?
練習17: 如何控制多個進程去并發刪除,插入和更新數據庫的某張表?
練習18: PHP的安全模式和非安全模式的區別