⑴ php在Web網站開發領域的優勢有哪些
強大,穩定,安全,成熟,而且開源,有很多成熟的系統。案例:facebook
PHP幾乎支持所有的操作系統平台及資料庫系統。
速度快, 效率高
PHP是一種強大的CGI腳本語言,語法混合了C、Java、Perl和PHP式的新語法,執行網頁速度比CGI、Perl和ASP更快,而且內嵌Zend加速引擎,性能穩定快速,佔用系統資源少,代碼執行速度快。PHP消耗相當少的系統資源。隨著版本的升級,php運行速度更加快速。
移植性好拓展性強,無論是mac ,win,linux,都支持php,php主要運行在web伺服器上,支持php典型的就是apche,iis 當然apache最佳。
成本還低。 PHP可以在UNIX、Linux等眾多不同的操作系統中架設基於PHP的Web伺服器。採用Linux+Apache+PHP+MySQL這種開源免費的框架結構可以為網站經營者節省很大一筆開支.
更新快
模塊化
支持面向對象 面向對象編程(OOP)是當前的軟體開發趨勢,PHP對OOP提供了良好的支持。可以使用OOP的思想來進行PHP的高級編程,對於提高PHP編程能力和規劃好Web開發構架都非常有意義。
功能強大:PHP在Web項目開發過程中具有極其強大的功能,而且實現相對簡單,
可操縱多種主流與非主流的資料庫,例如:MySQL、Access、SQL Server、Oracle、DB2等,其中,PHP與MySQL是現在絕佳的組合,可以跨平台運行。
可與輕量級目錄訪問協議進行信息交換。
可與多種協議進行通信,包括IMAP、POP3、SMTP、SOAP和DNS等。
選擇性也很廣。
⑵ 推薦一本學習php5的好書
1. Core PHP Programming, 3rd Edition
這本書是PHP專家Leon Atkinson和PHP創始人之一Zeev Suraski合著的。國內有
第2版,講PHP4的,但這本第3版還買不到。學校圖書館有一本原版,可惜只有一本
(現在在我手裡,咔咔)。講得非常全面,做為Web編程方面的知識,幾乎全部包括
了。最有價值的是Part 4,講Software Enginerring的,介紹了設計、效率與調試,
還介紹了四種最常用的設計模式,非常有參考價值。可惜畢竟是03年的書,那時候
PHP5還在開發中,所以裡面有一些內容並不完全適合現在的PHP5,比如名字空間(
PHP5並不支持名字空間)。不過瑕不掩瑜,做為PHP5的一本綜合書籍,這本書非常
經典,可以用於入門,也可以用於提高。
2. PHP5 Power Programming
這本書是PHP的另一創始人Andi Gutmans寫的,專門針對PHP5。個人感覺這本書
不適合學習,但很適合提高時參考。裡面花了大量篇幅講述PHP5的面向對象機制,
不過基本上跟Core PHP Programming重復,所以看過Core後再看這些將很快,可以
當成溫故一遍。還有一章介紹了PHP5里的高級面向對象特性,如迭代器,反射API(
Reflection API,在其它面向對象語言里稱自省),也介紹了設計模式。
可惜的是,跟上面一本書一樣,都是只講PHP特性的書,具體到PHP高級應用的
實戰講得感覺比較欠缺,像MVC模式,兩本書都沒講到,而這些對PHP高級編程來說是
非常重要的。比較令人安慰的是這本書還介紹了很多PHP高級特性,像PEAR包,APC,
APD,Xdebug,還有Zend Studio的使用,等等,這些還是非常有價值的。
總之,這是一本很適合提高時使用的書籍,跟Core一樣,也是PHP書籍中的經典。
3. PHP and MySQL Web Development, 3rd Edition
這是國內唯一能買到的PHP5書籍,中文翻譯,但翻譯質量不怎麼樣,有些句子
讀起來莫名其妙。這本書比較適合初中級的PHP學習,而且非常實際,有很多基本應
用的實例,很適合入門。除了資料庫知識很不錯外,裡面也講到了使用PHP和MySQL
開發中等項目時所需要考慮到的問題,介紹了很多基本的軟體項目管理方法,非常
實用。後面幾章是一些實例,介紹了購物車(我最不喜歡這東西),郵件列表,內容
管理系統和論壇的編寫,不過都只是基礎,沒有高級技巧,所以看起來會覺得很不舒
服,呵呵。
裡面有一張泛泛地講到了電子商務安全,可以參考下。個人感覺相當不錯的內容
是MySQL部分,基本涵蓋了資料庫基礎和MySQL基礎及高級特性,但限於篇幅,沒有去
講得很深入,權當是入門指引了。
因為是國內能買到的,所以很多人可能會喜歡從這本書開始學PHP5,我覺得也不
錯。總之很推薦這本書。
4. Essential PHP Security
這是一本講述PHP編碼安全的書,非常需要引起PHP開發人員的重視。我覺得這是
一本必讀書籍,讀過後會讓你冒冷汗。現在注重安全編碼的人實在太少了,對於一個
專業的PHP程序員,PHP安全特性絕對要爛熟於胸,而這本書就提供了一個非常好的視
角。
5. PHP Architect's Guide to PHP Design Patterns
這本書我正在看,對於PHP5面向對象的學習絕對非常有幫助。裡面介紹了非常多
的設計模式,直接以PHP語言實現出來,可以讓你一步到位使用模式思想。第17章介
紹了PHP里的MVC模式,可以說是帶了個好頭,很有參考價值。
由於還沒看完,所以不敢多評價,但可以肯定的是,這本書對於學PHP5面向對象
高級編程的人來說是絕對必備的。
國內有中文版,phpchina社區翻譯的,可以下載過來參考下。另外,好像關於
PHP設計模式的書又出了一本,叫做《PHP5: Objects, Patterns and Practice》,
可惜我Google了半天也找不到下載地址,只能作罷了,希望以後能找到。可以肯定這
又將是一本讓人振奮的書。
又將是一本讓人振奮的書。
最後想說明的是,Oreilly的PHP書就不用看了,包括PHP創始人Rasmus Lerdorf寫的
《Programming PHP》(現在好像出第2版了),講得東西基本上全是PHP手冊里的東
西,沒必要重復浪費時間。像《Learning PHP5》,《PHP Cookbook》之類,說實話
我個人感覺真的只是PHP手冊的子集。最近好像又出了本同樣可以看成是子集的書,
書名是《Learning PHP and MySQL》,看了一眼就沒看了。不是對Oreilly有偏見,
只是因為它的書全是入門級的,沒什麼含金量,屬於看過就扔的那種。想想K&R的
《The C Programming Language》吧,呵呵。
最最後想說明的是,PHP手冊,一定要反復看!這個是學PHP最重要的參考資料,每個
人都應該有一本以備不時之需。有中文翻譯版的,不過裡面的鏈接有錯誤,看起來不
是很方便,但多摸索幾次就能把鏈接弄對了。
大概就講這些了,只是我個人觀點,希望大家指點批評,共同進步。
⑶ PHP開發人員的python基礎知識
PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。那麼PHP開發人員的Python基礎知識都有哪些呢?以下僅供參考!
常用縮略語
Ajax:非同步 JavaScript + XML
XML:可擴展標記語言(Extensible Markup Language)
什麼是 Python?
Python 的定義是一種 「通用的高級編程語言」。它以簡潔性和易用性著稱,而且是少有的幾種對空格和縮進有要求的語言之一。Python 的主要作者 Guido Van Rossum 在社區中仍然非常活躍,並且被人們戲稱為仁慈的領導。
Python 的靈活性和緊湊性是值得稱贊的。它支持面向對象編程、結構化編程、面向方面編程以及函數編程等。Python 採用小內核設計,但具備大量擴展庫,從而確保了該語言的緊湊性和靈活性。
從語法的角度來說,您會發現 Python 的簡潔性異常突出——幾乎可以說是一種純粹的境界。PHP 開發人員要麼會對這種方法的語法深深陶醉,要麼會發現它的局限性。這主要取決於您自己的見解。Python 社區推動這種美感的態度是非常明確的,它們更加重視的是美學和簡潔性,而不是靈動的技巧。已形成 Perl 傳統(「可以通過多種方式實現它」)的 PHP 開發人員(像我自己)將面對一種完全相反的哲學(「應該只有一種方法可以實現它」)。
事實上,該社區定義了一種特有的代碼風格術語,即 Python 化(pythonic)。您可以說您的代碼是 Python 化,這是對 Python 術語的良好運用,同時還可展現語言的自然特性。本文並不打算成為 Pythonista(或 Pythoneer),但如果您想繼續 Python 之路,那麼千萬不能錯過本文的知識點。就像 PHP 有自己的編程風格,Perl 有自己的概念方法,學習 Python 語言必然也需要開始用該語言來思考問題。
另一個要點:在撰寫本文時,Python 的最新版本是 V3.0,但本文主要側重於 Python V2.6。Python V3.0 並不能向後兼容之前的版本,而且 V2.6 是使用最為廣泛的版本。當然,您可以根據需求使用自己喜好的版本。
Python 與 PHP 有何不同?
一般來說,PHP 是一種 Web 開發語言。是的,它提供了一個命令行介面,並且甚至可用於開發嵌入式應用程序,但它主要還是用於 Web 開發。相反,Python 是一種腳本語言,並且也可用於 Web 開發。從這方面來說,我知道我會這樣說——它比 PHP 更加接近 Perl。(當然,在其他方面,它們之間並無實際不同。我們繼續往下看。)
PHP 的語法中充斥著美元符號($)和大括弧({}),而 Python 相對來說則更加簡潔和干凈。PHP 支持 switch 和 do...while 結構,而 Python 則不盡然。PHP 使用三元操作符(foo?bar:baz)和冗長的函數名列表,而命名約定更是無所不有;相反,您會發現 Python 要簡潔多了。PHP 的數組類型可同時支持簡單列表和字典或散列,但 Python 卻將這兩者分開。
Python 同時使用可變性和不變性的概念:舉例來說,tuple 就是一個不可變的列表。您可以創建 tuple,但在創建之後不能修改它。這一概念可能要花些時間來熟悉,但對於避免錯誤極為有效。當然,更改 tuple 的惟一方法是復制它。因此,如果您發現對不可變對象執行了大量更改,則應該重新考量自己的方法。
之前提到,Python 中的縮進是有含義的:您在剛開始學習該語言時會對此非常難以適應。您還可以創建使用關鍵字作為參數的函數和方法——這與 PHP 中的標准位置參數迥然不同。面向對象的追隨者會對 Python 中真正的面向對象思想感到欣喜,當然還包括它的 「一級」 類和函數。如果您使用非英語語言,則會鍾愛於 Python 強大的.國際化和 Unicode 支持。您還會喜歡 Python 的多線程功能;這也是最開始令我為之著迷的特性之一。
綜上所述,PHP 和 Python 在許多方面都彼此類似。您可以方便地創建變數、循環,使用條件和創建函數。您甚至可以輕松地創建可重用的模塊。兩種語言的用戶社區都充滿活力和激情。PHP 的用戶群體更加龐大,但這主要歸因於它在託管伺服器及 Web 專注性方面的優勢和普及性。
很好 簡要介紹到此為止。我們開始探索之旅。
使用 Python
清單 1 展示了一個基本的 Python 腳本。
清單 1. 一個簡單的 Python 腳本
for i in range(20):
print(i)
清單 2 展示了腳本的必然結果。
清單 2. 清單 1 的結果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
在深入探索之前,我們先來了解一些預備知識。首先從變數開始。
變數
可以看到,表示變數並不需要任何特殊的字元。變數 i 就是一個純粹的 i——毫無特殊之處。表示代碼塊或語言結束也不需要任何特殊字元(比如分號和括弧);只需要在 for 行使用一個簡單的冒號即可(:)。還需注意,縮進會向 Python 指示哪些內容屬於 for 循環。舉例來說,清單 3 中的代碼會在循環中為各編號輸出一個說明。
清單 3. 為各循環添加一條語句
for i in range(20):
print(i)
print('all done?')
相反,清單 4 中的代碼會在循環結束處輸出一條說明。
清單 4. 在循環後添加一條語句
for i in range(20):
print(i)
print('all done!')
現在,我第一次看到這樣的代碼時,我認為這完全是無稽之談。什麼?讓我相信換行和縮進能保證代碼的結構和運行?請相信我,不用多久,您就會習慣它(但我需要承認必須到達到分號處才會結束語句的運行)。如果您與其他開發人員共同開發 Python 項目,則會發現這種可讀性的用處是多麼大了。您不再像以前那樣總是猜測 「這個聰明的傢伙在這里究竟想幹些什麼?」
在 PHP,您使用 = 操作符為變數分配值(參見 清單 5)。在 Python 中,您使用相同的操作符,只是需要標記或指向值。對於我來說,它就是賦值操作而已,我不需要過多擔心專門的術語。
清單 5. 創建變數
yorkie = 'Marlowe' #meet our Yorkie Marlowe!
mutt = 'Kafka' #meet our mutt Kafka
print(mutt) #prints Kafka
Python 的變數名稱約定與 PHP 類似:您在創建變數名時只能使用字母、數字和下劃線(_)。同樣,變數名的第一個字元不能是數字。Python 變數名是區分大小寫的,並且您不能使用特定的 Python 關鍵字(比如 if、else、while、def、or、and、not、in 和 is 開始符)作為變數名。這沒有什麼值得奇怪的。
Python 允許您隨意執行基於字元串的操作。清單 6 中的大多數操作應該都是您熟悉的。
清單 6. 常見的基於字元串的操作
yorkie = 'Marlowe'
mutt = 'Kafka'
ylen = len(yorkie) #length of variable yorkie
print(ylen) #prints 7
print(len(yorkie)) #does the same thing
len(yorkie) #also does the same thing, print is implicit
print(yorkie.lower()) #lower cases the string
print(yorkie.strip('aeiou')) #removes vowels from end of string
print(mutt.split('f')) #splits "Kafka" into ['Ka', 'ka']
print(mutt.count('a')) #prints 2, the number of a's in string
yorkie.replace('a','4') #replace a's with 4's
條件語句
您已經了解了如何使用 for 循環;現在,我們來討論條件語句。您會發現 Phyon 中的條件語句與 PHP 基本相同:您可以使用熟悉的 if/else型結構,如清單 7 所示。
清單 7. 一個簡單的條件測試
yorkie = 'Marlowe'
mutt = 'Kafka'
if len(yorkie) > len(mutt):
print('The yorkie wins!')
else:
print('The mutt wins!')
您還可以使用 if/elif/else(elif,等價於 PHP 中的 elseif)創建更加復雜的條件測試,如清單 8 所示。
清單 8. 一個比較復雜的條件測試
yorkie = 'Marlowe'
mutt = 'Kafka'
if len(yorkie) + len(mutt) > 15:
print('The yorkie and the mutt win!')
elif len(yorkie) + len(mutt) > 10:
print('Too close to tell!')
else:
print('Nobody wins!')
您可能會說,目前為止並沒有什麼與眾不同的地方:甚本上和想像中沒有太大區別。現在,我們來看 Python 處理列表的方式,您會發現兩種語言之間的不同之處。
列表
一種常用的列表類型是 tuple,它是不可變的。在 tuple 中載入一系列值之後,您不會更改它。Tuple 可以包含數字、字元串、變數,甚至其他 tuples。Tuples 從 0 開始建立索引,這很正常;您可以使用 -1 索引訪問最後一個項目。您還可以對 tuple 運行一些函數(請參見清單 9)。
清單 9. Tuples
items = (1, mutt, 'Honda', (1,2,3))
print items[1] #prints Kafka
print items[-1] #prints (1,2,3)
items2 = items[0:2] #items2 now contains (1, 'Kafka') thanks to slice operation
'Honda' in items #returns TRUE
len(items) #returns 4
items.index('Kafka') #returns 1, because second item matches this index location
列表與 tuple 類似,只不過它們是可變的。創建列表之後,您可以添加、刪除和更新列表中的值。列表使用方括弧,而不是圓括弧(()),如清單 10 所示。
清單 10. 列表
groceries = ['ham','spam','eggs']
len(groceries) #returns 3
print groceries[1] #prints spam
for x in groceries:
print x.upper() #prints HAM SPAM EGGS
groceries[2] = 'bacon'
groceries #list is now ['ham','spam','bacon']
groceries.append('eggs')
groceries #list is now ['ham', 'spam', 'bacon', 'eggs']
groceries.sort()
groceries #list is now ['bacon', 'eggs', 'ham', 'spam']
字典類似於關聯數組或散列;它使用鍵值對來存儲和限制信息。但它不使用方括弧和圓括弧,而是使用尖括弧。與列表類似,字典是可變的,這意味著您可以添加、刪除和更新其中的值(請參見清單 11)。
清單 11. 字典
colorvalues = {'red' : 1, 'blue' : 2, 'green' : 3, 'yellow' : 4, 'orange' : 5}
colorvalues #prints {'blue': 2, 'orange': 5, 'green': 3, 'yellow': 4, 'red': 1}
colorvalues['blue'] #prints 2
colorvalues.keys() #retrieves all keys as a list:
#['blue', 'orange', 'green', 'yellow', 'red']
colorvalues.pop('blue') #prints 2 and removes the blue key/value pair
colorvalues #after pop, we have:
#{'orange': 5, 'green': 3, 'yellow': 4, 'red': 1}
在 Python 中創建一個簡單的腳本
現在,您已經對 Python 有了一定的了解。接下來,我們將創建一個簡單的 Python 腳本。該腳本將讀取位於您的伺服器 /tmp 目錄下的 PHP 會話文件的數量,並在日誌文件中寫入摘要報告。在該腳本中,您將學習如何導入特定函數的模塊,如何使用文件,以及如何寫入日誌文件。您還將設置一系列變數來跟蹤所收集的信息。
清單 12 展示了整個腳本。打開一個編輯器,並將代碼粘貼到其中,然後在系統中將該文件保存為 tmp.py。然後,對該文件運行 chmod + x,使它成為可執行文件(假定您使用 UNIX? 系統)。
清單 12. tmp.py
#!/usr/bin/python
import os
from time import strftime
stamp = strftime("%Y-%m-%d %H:%M:%S")
logfile = '/path/to/your/logfile.log'
path = '/path/to/tmp/directory/'
files = os.listdir(path)
bytes = 0
numfiles = 0
for f in files:
if f.startswith('sess_'):
info = os.stat(path + f)
numfiles += 1
bytes += info[6]
if numfiles > 1:
title = 'files'
else:
title = 'file'
string = stamp + " -- " + str(numfiles) + " session "
+ title +", " + str(bytes) + " bytes "
file = open(logfile,"a")
file.writelines(string)
file.close()
在第一行中,您可以看到一個 hash-bang 行:它用於標識 Python 解釋器的位置。在我的系統中,它位於 /usr/bin/python。請根據系統需求調整這一行。
接下來的兩行用於導入特定的模塊,這些模塊將幫助您執行作業。考慮到腳本需要處理文件夾和文件,因此您需要導入 os 模塊,因為其中包含各種函數和方法,可幫助您列出文件、讀取文件和操作文件夾。您還需要寫入一個日誌文件,因此可以為條目添加一個時間戳 — 這就需要使用時間函數。您不需要所有時間函數,只需要導入 strftime函數即可。
在接下來的六行中,您設置了一些變數。第一個變數是 stamp,其中包含一個日期字元串。然後,您使用 strftime 函數創建了一個特定格式的時間戳 — 在本例中,時間戳的格式為 2010-01-03 12:43:03。
接下來,創建一個 logfile 變數,並在文件中添加一個實際存儲日誌文件消息的路徑(該文件不需要實際存在)。為簡單起見,我在 /logs 文件夾中放置了一個日誌文件,但您也可以將它放置在別處。同樣,path 變數包含到 /tmp 目錄的路徑。您可以使用任何路徑,只要使用斜杠作為結束即可 (/)。
接下來的三個變數也非常簡單:files 列表包含指定路徑中的所有文件和文件夾,另外還包含 bytes 和 numfiles 兩個變數。這兩個變數都設置為 0;腳本會在處理文件時遞增這些值。
完成所有這些定義之後,接下來就是腳本的核心了:一個簡單的 for 循環,用於處理文件列表中的各文件。每次運行循環時,腳本都會計算文件名;如果它以 sess_ 開頭,則腳本會對該文件運行 os.stat(),提取文件數據(比如創建時間、修改時間和位元組大小),遞增 numfiles 計數器並將該文件的位元組大小累計到總數中。
當循環完成運行後,腳本會檢查 numfiles 變數中的值是否大於 1。如果大於 1,則會將一個新的 title 變數設置為 files;否則,title 將被設置為單數形式的 file。
腳本的最後部分也非常簡單:您創建了一個 string 變數,並在該變數中添加了一行以時間戳開始的數據,並且其後還包含 numfiles(已轉換為字元串)和位元組(也已轉換為字元串)。請注意繼續字元();該字元可允許代碼運行到下一行。它是一個提高可讀性的小技巧。
然後,您使用 open() 函數以附加模式打開日誌文件(畢竟始終需要在該文件中添加內容),writelines() 函數會將字元串添加到日誌文件中,而 close() 函數用於關閉該文件。
現在,您已經創建了一個簡單的 Python 腳本。該腳本可用於完成許多任務,舉例來說,您可以設置一個 cron作業來每小時運行一次這個腳本,以幫助您跟蹤 24 小時內所使用的 PHP 會話的數量。您還可以使用 jQuery 或其他一些 JavaScript 框架通過 Ajax 連接這個腳本,用於為您提供日誌文件提要(如果採用這種方式,則需要使用 print命令來返回數據)。
⑷ php編輯器哪些好用
PHP編輯器中比較好用的有以下幾款:
Adobe Dreamweaver
Notepad++
Sublime Text
EditPlus
Zend Studio
總結:以上五款PHP編輯器各有千秋,選擇哪一款取決於個人的使用習慣和具體需求。適合自己的才是最好的,建議根據實際需求進行試用和選擇。