❶ 學習php有什麼技巧嗎有捷徑嗎
打開電腦、配置解析好PHP環境,然後努力的敲代碼
2
在敲代碼的同時多想想,怎樣才不回重復工作,怎樣才能提高工作效率。
3
用心、堅持。加油。熟能生巧,堅持,用心是唯一的辦法
❷ PHP面試有什麼技巧么
PHP程序員在面試的時候一般應該抓住以下幾個點。
一、應該介紹自己掌握的開發一種,主要介紹PHP語言的獨特語法以及如何使用,比如PHP語言會比CGI更快的執行動態頁面。
二、必須熟悉Oracle、Mysql等資料庫,並能簡單的介紹自己掌握的程度。由於php做出的動態頁面比用其他語言做出來的頁面在執行效率以及CGI方面高得多,所以你還需要在面試中說出自己的文檔撰寫能力很強。
三、PHP程序員應該具備獨立分析和解決問題的能力,可以在自我介紹中講講自己曾經遇到過的問題是如何解決的。讓面試官看到你的能力,這將會直接影響到你自我介紹的成功與否。
四、一個PHP程序員必須有良好的職業道德和工作態度,所以在面試中應該盡量講自己在做項目時的認真態度以及今後的工作規劃,表現出自己的進取心。
五、還有關於溝通能力和理解能力的體現,這個在與HR的交談中就可以表現出來,所以需要做的工作就是從容的有條理的把自我介紹說完,回答每一個問題時都應該簡潔明了,關於自我介紹可以提前做個草稿,背一下。
六、團隊合作能力也是企業非常看重的,在培訓中老師一般都會帶領大家做項目,大的項目一般會分小組,每個人都有相對應的任務,這就模擬了公司中的團隊合作,在自我介紹過程中要把做項目的具體流程以及相互協作的過程說出來,讓HR看到自己具備團隊合作的能力。
七、最後就是執行力,每當任務分配下來的時候該如何執行,還有自己講過職業規劃後該如何執行,還有在學習的過程中是如何人字形的,遇到困難又是如何執行的,這些都可以體現出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調用shell的方法技巧
php調用shell的方法技巧
一、配置
查看php.ini中配置是否打開安全模式,主要是以下三個地方
safe_mode = (這個如果為off下面兩個就不用管了)
disable_functions =
safe_mode_exec_dir=
二、使用
由於PHP基本是用於WEB程序開發的,所以安全性成了人們考慮的一個重要方面。於是PHP的設計者們給PHP加了一個門:安全模式。如果運行在安全模式下,那麼PHP腳本中將受到如下四個方面的限制:
① 執行外部命令
② 在打開文件時有些限制
③ 連接MySQL資料庫
④ 基於HTTP的認證
在安全模式下,只有在特定目錄中的外部程序才可以被執行,對其它程序的調用將被拒絕。這個目錄可以在php.ini文件中用 safe_mode_exec_dir指令,或在編譯PHP是加上--with-exec-dir選項來指定,默認是/usr/local/php /bin。
如果你調用一個應該可以輸出結果的外部命令(意思是PHP腳本沒有錯誤),得到的'卻是一片空白,那麼很可能你的網管已經把PHP運行在安全模式下了。
三、如何做?
在PHP中調用外部命令,可以用如下三種方法來實現:
1) 用PHP提供的專門函數
PHP提供共了3個專門的執行外部命令的函數:system(),exec(),passthru()。
system()
原型:string system (string command [, int return_var])
system()函數很其它語言中的差不多,它執行給定的命令,輸出和返回結果。第二個參數是可選的,用來得到命令執行後的狀態碼。
例子:
復制代碼 代碼如下:system("/usr/local/bin/webalizer/webalizer");
exec()
原型:string exec (string command [, string array [, int return_var]])
exec() 函數與system()類似,也執行給定的命令,但不輸出結果,而是返回結果的最後一行。雖然它只返回命令結果的最後一行,但用第二個參數array可以得到完整的結果,方法是把結果逐行追加到array的結尾處。所以如果array不是空的,在調用之前最好用unset()最它清掉。只有指定了第二個參數時,才可以用第三個參數,用來取得命令執行的狀態碼。
例子:
復制代碼 代碼如下:exec("/bin/ls -l");
exec("/bin/ls -l", $res);
#$res是一個數據,每個元素代表結果的一行
exec("/bin/ls -l", $res, $rc);
#$rc的值是命令/bin/ls -l的狀態碼。成功的情況下通常是0
passthru()
原型:void passthru (string command [, int return_var])
passthru() 只調用命令,不返回任何結果,但把命令的運行結果原樣地直接輸出到標准輸出設備上。所以passthru()函數經常用來調用象pbmplus(Unix 下的一個處理圖片的工具,輸出二進制的原始圖片的流)這樣的程序。同樣它也可以得到命令執行的狀態碼。
例子:
復制代碼 代碼如下:header("Content-type: image/gif");
passthru("./ppmtogif hunte.ppm");
希望本文所述對大家的PHP程序設計有所幫助。
;❺ 高質量PHP代碼的50個技巧(3)
42
43
44
45
/**
Method to execute a command in the terminal
Uses :
1. system
2. passthru
3. exec
4. shell_exec
*/
function terminal($command)
{
//system
if(function_exists('system'))
{
ob_start();
system($command , $return_var);
$output = ob_get_contents();
ob_end_clean();
}
//passthru
else if(function_exists('passthru'))
{
ob_start();
passthru($command , $return_var);
$output = ob_get_contents();
ob_end_clean();
}
//exec
else if(function_exists('exec'))
{
exec($command , $output , $return_var);
$output = implode(" " , $output);
}
//shell_exec
else if(function_exists('shell_exec'))
{
$output = shell_exec($command) ;
}
else
{
$output = 'Command execution not possible on this system';
$return_var = 1;
}
return array('output' => $output , 'status' => $return_var);
}
terminal('ls');
上面的函數將運行shell命令, 只要有一個系統函數可用, 這保持了代碼的一致性.
5. 靈活編寫函數
?
1
2
3
4
5
6
function add_to_cart($item_id , $qty)
{
$_SESSION['cart']['item_id'] = $qty;
}
add_to_cart( 'IPHONE3' , 2 );
使用上面的函數添加單個項目. 而當添加項列表的時候,你要創建另一個函數嗎? 不用, 只要稍加留意不同類型的參數, 就會更靈活. 如:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function add_to_cart($item_id , $qty)
{
if(!is_array($item_id))
{
$_SESSION['cart']['item_id'] = $qty;
}
else
{
foreach($item_id as $i_id => $qty)
{
$_SESSION['cart']['i_id'] = $qty;
}
}
}
add_to_cart( 'IPHONE3' , 2 );
add_to_cart( array('IPHONE3' => 2 , 'IPAD' => 5) );
現在, 同個函數可以處理不同類型的輸入參數了. 可以參照上面的例子重構你的多處代碼, 使其更智能.
6. 有意忽略php關閉標簽
我很想知道為什麼這么多關於php建議的博客文章都沒提到這點.
?
1
2
3
<?php
echo "Hello";
//Now dont close this tag
這將節約你很多時間. 我們舉個例子:
一個 super_class.php 文件
?
1
2
3
4
5
6
7
8
9
<?php
class super_class
{
function super_function()
{
//super code
}
}
?>
//super extra character after the closing tag
index.php
?
1
2
require_once('super_class.php');
//echo an image or pdf , or set the cookies or session data
這樣, 你將會得到一個 Headers already send error. 為什麼? 因為 “super extra character” 已經被輸出了. 現在你得開始調試啦. 這會花費大量時間尋找 super extra 的位置。因此, 養成省略關閉符的習慣:
?
1
2
3
4
5
6
7
8
9
<?php
class super_class
{
function super_function()
{
//super code
}
}
//No closing tag
這會更好.
7. 在某地方收集所有輸入, 一次輸出給瀏覽器
這稱為輸出緩沖, 假如說你已在不同的函數輸出內容:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function print_header()
{
echo "<p id='header'>Site Log and Login links</p>";
}
function print_footer()
{
echo "<p id='footer'>Site was made by me</p>";
}
print_header();
for($i = 0 ; $i < 100; $i++)
{
echo "I is : $i ';
}
print_footer();
替代方案, 在某地方集中收集輸出. 你可以存儲在函數的局部變數中, 也可以使用ob_start和ob_end_clean. 如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function print_header()
{
$o = "<p id='header'>Site Log and Login links</p>";
return $o;
}
function print_footer()
{
$o = "<p id='footer'>Site was made by me</p>";
return $o;
}
echo print_header();
for($i = 0 ; $i < 100; $i++)
{
echo "I is : $i ';
}
echo print_footer();
為什麼需要輸出緩沖:
>>可以在發送給瀏覽器前更改輸出. 如 str_replaces 函數或可能是 preg_replaces 或添加些監控/調試的html內容.
>>輸出給瀏覽器的同時又做php的處理很糟糕. 你應該看到過有些站點的側邊欄或中間出現錯誤信息. 知道為什麼會發生嗎? 因為處理和輸出混合了.
8. 發送正確的mime類型頭信息, 如果輸出非html內容的話.
輸出一些xml.
?
1
2
3
4
5
6
$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';
$xml = "<response>
<code>0</code>
</response>";
//Send xml data
echo $xml;
工作得不錯. 但需要一些改進.
?
1
2
3
4
5
6
7
$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';
$xml = "<response>
<code>0</code>
❻ php將代碼越寫越少要注意的一些細節和經驗有哪些
1、如果能將類的方法定義成static,就盡量定義成static,它的速度會提升將近4倍。 2、$row[』id』] 的速度是$row[id]的7倍。 3、echo 比 print 快,並且使用echo的多重參數(譯註:指用逗號而不是句點)代替字元串連接,比如echo $str1,$str2。 4、在執行for循環之前確定最大循環數,不要每循環一次都計算最大值,最好運用foreach代替。 5、注銷那些不用的變數尤其是大數組,以便釋放內存。 6、盡量避免使用__get,__set,__autoload。 7、require_once()代價昂貴。 8、include文件時盡量使用絕對路徑,因為它避免了PHP去include_path里查找文件的速度,解析操作系統路徑所需的時間會更少。 9、如果你想知道腳本開始執行(譯註:即伺服器端收到客戶端請求)的時刻,使用$_SERVER[『REQUEST_TIME』]要好於time()
❼ php程序中的邏輯思維怎麼培養呢
/php中的邏輯思維的/培養可以從下/面的幾個/方向/進行學習,思維快的能快速/編寫邏輯代碼。
第一:明確學習目的
邏輯思維學習編程對多數IT業人員來說都是非常有用的。學編程,做一名編程人員,從個人角度講,可以/解決在軟體/使用中所遇到的問題,改進現有軟體,可以為自己找到一份理想的工作添加重/要得砝碼,有利於在求/職道路上謀得一個好的職位;從國家的角度,可以為中國的軟體產業做出應\//有的貢獻,一名優秀/的程序員永遠是被爭奪的對象。學習編程還能/鍛煉思維,使我們的邏/輯思維更加嚴密;能夠不斷享受/到創新的樂趣,將一直有機會走在高科技的前沿,因為程序設計本/身是一種/創造性的工/作。知識經濟時代給我們帶來了無限的機會,要/想真正掌握計算/機技術,並在IT行業里干出/一番事業來,有所作為,具有一定的編程能力是一個基本條件和要求。
第二打好基礎,學好基礎知識對我們開發也很重要學編程要具備一定的基礎,總結之有以下幾方面:
/首先是數學基礎 從計算機發展和應用的歷史來看計算機的數學模型和體系結構等都是有數學家提出的,最早的計算機/也是為數值計算而設計的。因此,要學好計算機就要有一定的數學基礎,出學者有高中水平就差不多了。
其次是邏輯思維能/力的培養 學程序設計要有一定的邏輯思維能力,「邏思力」的培養要長時間的實踐鍛煉。要/想成為一名優秀的程序員,最重要的是掌握編程思想。要做到這一點必須在反/復的實踐、觀察、分析、比較、總結中逐/漸地積累。因此在學習編程過程中,我們不必等到什麼都完全明白了才去/動手實踐,只要明白了大概,就要敢於自己動手去體驗。誰都有第一次。有些問題只有通過實踐後才能明白,也/只/有實踐才能把老師和書上的知識變成自己的,高手都是這樣/成材的。最後是選擇一種合適的入門語言 面對各種各樣的語言,應按什麼樣的順序學呢?程序設計工/具不外乎如下幾類: 1)本地開發 應用軟體開發的工具有:Visual Basic 、Delphi 、VC++ ( C++ Builder ) 等;資料庫開/發工具有:Visual Foxpro 、Oracle Developer 、Power Builder 等。 2)跨平台開發 開發工具如 Java 等。 3)網路開發 對客戶端開發工具如:Java Script 等;對伺服器開發工具如:PHP 、ASP 、JSP 、ISAPI 、NSAPI 、CGI 等。 以上不同的環境下幾種開發工具中 VB 法簡單並容易理解,界面設計是可設化的,易學、易用。選 VB 作為入門的方向對出學者是較為適合的。
第三:注意理解一些重要概念
一本程序設計的/書看到的無非就是變數、函數、條件語句、循環語句等概念,但要真正能進行編程應用,需要深入理解這些概念,在理解的基礎上應用,不要只簡單地學習語法、結構,而要吃透針對這些語法、結構的應用例子,做到舉一反三,觸類旁通。
第四:掌握編程思想,編程思/想使用較多的就是oop編程思想
學習一門語言或開發工/具,語法結/構、功能調用是次要的,最主要是學習它的思想。例如學習 VC 就要學習 Windows 的內在機理、/什麼是線程./.....;學習 COM 就要知道VTALBE 、類廠、介面、idl......,關鍵是學一種思想,有了思想,那麼我們就可以觸類旁通。
第六:多實踐、多交流,一切思維來自項目開發的積累
掌握編程思想必須在編程實際工作中/去實踐和體會。編程起步階段要經常自己動手設計程序,具體設計/時不要拘泥於固定的思維方式,遇到問題要多想幾種解決的方案。這就要多交流,各人的/思維方式不同、/角度各異,/各有高招,通過交流可不斷吸收別人的長處,豐富編程實踐,幫助自己提高水平。親自動手進行程序設計是創造性思維應用的/體現,也是培養邏輯思維的好方法。
第七:養成良好的/編程習慣
編程入門不難,但/入門後不斷學習是十分重要的,相對來說較為漫長。在此期間要注意養成一些良好的編程習/慣。編程風格的好壞很/大程度/影響程序質量。良好的編程風格可以使
程序結構清晰合理,且使程序代碼/便於維護。如代碼的縮進編排、變數命令規則的一致性、代碼的注釋等。
第八:/上網學編程
在網上可以學到很多不同的編程思想、方法、經驗和技巧,有大量的工具和作品及相關的輔導材料供下載
8.加強計算機理論知識的再學習
思維培養學編程/是符合「理論→實踐→/再理論→再實踐」的一個認識過程。一開始要具有一定的計算機理論基/礎知識,包/括編程所需的/數學基礎知識,具備了入門的條件,就可以
開始編程的實踐,從/實踐中可以發現問題/需要加強計算機理論知識的再學習。程序人人皆可編,但當你發現編/到一定程度很/難再提高的/時候,就/要回頭來學習一些計算機科學和數
學基礎理論。/學過之後,很多/以/前遇到的問題都會迎刃而解,使人有豁然開朗之感。因此在學習編程/的過程中要不斷地針對應/用中的困惑和問題深/學習數據結構、演算法、計算機
原理、編譯/原理、操作系統/原理、軟體工程等計算機科學的理論基礎和數理邏輯、代數系統、圖論、離散數學等數學理論基礎知識。這樣經過不斷的學習,再努力地實踐,編程水平一定會不斷提高到一個新高度。
❽ php面試寶典及PHP面試技巧
關於php面試寶典及PHP面試技巧
Php面試寶典究竟是怎樣的?對於眾多的php工程師來說,這是個十分有意義的問題。如果他們不能掌握科學的php面試寶典,最終他們面對的,也就是應聘的失敗。特別是當他們面臨要求較高的主考官時,就更要三思而後行了。
說到php面試寶典,可能在一百個人看來,就有一百個哈姆雷特。所以說,沒有絕對的寶典,只有相對的經驗。根據我的'總結,這些經驗主要體現在以下三個方面。
第一,專業技術不可少。
畢竟公司招的是專業的php工程師,如果他不能為企業解決相關的技術問題,是不可能得到這份工作的。在面試時,技術方面的主考官很可能把自己遇到的實際問題擺在應聘者眼前,如果應聘者回答得不能讓人滿意,很可能就止步於此了。假設你也要應聘php工程師,沒有知識上的積累,很可能會導致應聘失敗。程序員的職業發展規劃和分類
第二,綜合素質很重要。
在php面試寶典里,這一條也是相當重要的。所謂綜合素質,既包括應聘者的事業心、進取心,又包括他對工作的熱情、自律能力等內容。試想,如果一個應聘php工程師的人,除了在專業上的能力,其他一無是處,那麼,主考官不會錄用他的。這是因為,php工程師也要與公司里的其他人和平共處,也要得到別人的支持,或者給予別人支持。
第三,回答薪酬要討巧。
很多php工程師在面對主考官時,會被問到預期的工資的問題。這個問題確實有點棘手,如果你要價高了,招聘單位不會錄用你,如果你要價低了,又不能體現出自己的價值,讓自己受了委屈。所以,在回答這一問題時,一定要從實際情況出發,將行業內盛行的工資水平作為參考,加上自己的預期,給主考官報一個在合理范疇內的工資水準。
學習了php面試寶典,應聘者還要注意,任何一份工作都有自己的特殊性,如果你對這份工作沒有必要的激情和動力,就不要去爭奪它了。因為,這樣既浪費了你自己的時間和精力,也給主考官帶來了一定的困擾。
;❾ PHP現在怎麼樣,小白能學會嗎找個前輩是不是好點
php基礎:php學習基礎文字教程,學習php先從基礎開始
php入門:php學習必看的入門視頻教程,學完能夠做一些基礎性的web開發
php提高:php開發高級教程及經驗總結,包含一些知識點的歸納總結,以及開發經驗總結
php實戰:php開發實戰視頻教程,看完你就能開發大型的web項目啦!
學習路線
一、 網上某些錯誤的學習路線圖網上有些錯誤的學習路線圖,讓學完HTML、CSS後立馬去學Javascript和jQuery等,這種課程簡直是對牛彈琴。你特么的怎麼不去搞個前端工程師培訓或者是吹牛逼的全棧工程師培訓呀。這種錯誤的路線圖的問題在於將重心未放在PHP方向,而放在了前端方向。將面向對象,業務思想、SQL轉化等PHP關注的重心沒有放置在之前而放置在之後了。PHP的重心還是要放在業務處理上。
二、 前期加快入門前期的時候要加快入門的進度,學一些HTML和Css能基本寫出網頁後,就快速進入到PHP階段。因為大家是自學的PHP,學了半天還沒搞到PHP的話,會放鬆對學習的熱情,從而造成自學效果下降。學完HTML和Css不要學Js,立馬進入到環境的搭建上來。
三、 關於開發 環境很多人在這兒走彎路,喜歡找不到同教程看環境搭建。我們在公司裡面開發的時候,真正的是使用的Linux環境進行開發和線上代碼運行的。在學習的過程中,我建議:快、快、快。少糾結、代碼能跑就行。此處,推薦使用XAMPP、AppServ、PHPStudy、WampServer等工具快速安裝完成,開始自己的第一段
<?php
phpinfo();
四、 基本語法環境搭建完,開始要學習的東西有以下一些東西了:變數、數據類型、注釋、常量、if…else、swith…case、while、do..while、for、運算符、數組、函數、常用函數;這些過程當中,很多小白容易糾結為啥啥都寫不出來呢。此外,全是些基本語法,一定要記住,多寫多記多背。在心理上覺得啥都寫不出來是很正常的。
五、 面向過程使用階段在這一階段就能夠寫出東西來了,學完MySQL資料庫後立馬開始學習PHP連接資料庫吧,學習完成後寫個留言本、分頁、再學個cookie和session實現用戶登陸、注冊。學個GD後開始實現個驗證碼吧。最後在這個階段你可以寫一個論壇、貼吧或者商城出來。
六、 面向對象和MVC在這個階段不要再看PHP5的視頻了,最好看PHP7以後的視頻,特別是新的一些標准,例如:composer、PSR、面向對象的設計模式等。你可以看一些千鋒PHP最新的視頻,這些技術點全都講到了。這一塊學習順序:面向對象基本語法;寫幾個常用類;組合MVC學習設計模式學習PSR
七、 深入學學前端PHP學好了,前端課程學起來跟玩似的了。因為你已經有了一門語言的基礎了。所以,學習一些JS,再學一些jQuery,bootstrap夠你用了。
八、 深入ThinkPHP5.0或者Laravel深入學習一個或者兩個框架,然後結合前端的知識,寫二個以上的項 目出來吧。你可以寫個多品類的商城、寫一個OA系統等。
九、 學習Linux伺服器學習Linux伺服器的主要了解多伺服器的部署,了解軟體安裝,特別是LAMP和LNMP的環境搭建。將對應的代碼搭建到自己部署的伺服器上去。最後買一個域名和阿里雲伺服器,真正的將代碼部署到雲伺服器上去,走一次上線流程,用一下git管理一下代碼會更棒。
十、 深入大並發架構的學習你非常有必要學習一下大並發架構,學一些NoSQL技術、Swoole技術、keepalived技術等多項不同的技術。讓自己全面了解伺服器集群下代碼如何運行的更加高效。並且全面的了解一下PHP的socket、進程、線程、協程等技術,對你的代碼的技術提升是很有幫助的。建議這個時候使用Redis、RockMQ寫一個大並發的、多伺服器的秒殺出來。這一塊國內都有很多視頻,視頻不要再看PHP5的視頻了,你可以多看看PHP7的視頻。現在學習PHP已經不再是單純的學習PHP了,到後期更多的是學伺服器集群,大並發處理,按照這個路線圖一點一點往前走,有問題可以在評論下面咱們相互交流。
學習建議
我們要有一個循序漸進的學習過程,這里先把學習PHP的過程做一下概括,這和很多學習PHP的愛好者是不謀而合的:
(1) 熟悉HTML/CSS/JS、、網頁基本元素,完成階段可自行製作簡單的網頁,對元素屬性相對熟悉
(2) 理解動態語言的概念和運做機制,熟悉基本的PHP語法
(3) 學習如何將PHP與HTML結合起來,完成簡單的動態頁面
(4) 接觸學習MySQL,開始設計資料庫
(5) 不斷鞏固PHP語法,熟悉大部分的PHP常用函數,理解面向對象編程,MySQL優化,以及一些模板和框架
(6) 最終完成一個功能齊全的動態站點
新手不要看到上面的概括就以為PHP學習是很簡單的,編程是需要你認真的思考和不斷的實踐。 下面具體解釋一下PHP的學習線路。 首先,任何網站全都是由網頁組成的,也就是說想完成一個網站,必須先學會做網頁,掌握靜態網頁的製作技術是學習開發網站的先決條件。 因此我們要學習HTML,為今後製作網站打下基礎。 學習HTML應該邊學邊做,HTML中的任何元素都要親自實踐,只有明白了什麼元素會起到什麼效果之後,才能深刻記憶,一味的看書是不行的
假設你已經可以完成一個靜態頁面了,那麼就該開始了解動態語言,剛一接觸動態語言,可能很多人都會擁有很多不解,代碼不是作為直接輸出的,而是要經過處理的,HTML是經過HTML解析器,而PHP也要通過PHP解析器,跟學習HTML一樣的道理,想讓任何的解析器工作,就必須使用它專用的語法結構
學習PHP,你應該感到幸運,因為如果你學過其他語言,你就會發現PHP還是相對簡單的,這一階段,你要搞清楚HTML和PHP的概念,你現在完全可以讓PHP給你算算一加一、、於幾,然後在瀏覽器輸出。 不要覺得幼稚,這雖然是很小的一段代碼,但是對於你的編程之路,可是邁出了一大步。 不過現在,你還是一個菜鳥
接下來就要學習資料庫了,MySQL可以說是PHP的黃金搭檔,我們要征服這個資料庫,在你理解了資料庫的概念之後,就要嘗試通過PHP來連接資料庫,進而會用PHP成功的插入,刪除和更新數據
這個時候,你可能會處於這種狀態:你會HTML嗎?會,我能編好幾個表格排板的網頁呢!你會PHP嗎?會,我會把一加一的運算寫在函數里,然後調用!你會MySQL嗎?會,我可以把資料庫里的數據插入刪除啦!
那接下來該做什麼呢?嘗試著做個小的留言本吧,這同樣是新手面臨的一道關卡。 花了一段時間,你終於學會把表單的數據插入資料庫,然後顯示出來了,應該說一個程序的雛形已經誕生了。 但是,你可能會看人家這個編論壇,那個開發CMS,我什麼時候可以寫一個呢?不要急,再鞏固一下知識,熟悉了PHP和MySQL開發的要領後,再回頭看你寫的那個留言本,你也許會懷疑那真的是你寫的嗎?這個時候,你可以完善一下你寫的留言本。 留言本應該加入注冊以及分頁的功能,可以的話,UI也可以加強
這就算學會了嗎?NO,NO,NO,還早呢,你到現在還沒碰過OOP呢吧?那模板和框架呢?還要繼續學習呀!PHP框架提供了一個用以構建web應用的基本框架,從而簡化了用PHP編寫web應用程序的流程。 可以節省開發時間、、有助於建立更穩定的應用。 所以說,PHP框架是一個可以用來節省時間並強化自己代碼的工具。 當你第一次選擇PHP框架時,建議多嘗試幾個,每個框架都有自己的長處和短處,例如Zend框架由於多樣的功能、、並且有一個廣泛的支持系統,流行了很長時間。 而CakePHP是一個晚於Zend的PHP框架,相應的支持系統也比較少,但是更為方便和易於使用
了解了面向對象和框架後,你應該接觸一下XML了,總而言之,你絕對不會發現你全部都學會了,學無止境!學東西,永遠不要妄想有速成這一說,技巧再多,但是缺少努力,那也是白搭。 有一點可以保證,就是你學會了PHP,那麼再學其它語言,肯定速成,反過來也一樣,如果你之前學過其它的語言,那麼學PHP肯定快
多借鑒別人成功的代碼,絕對是有益無害,所以要多看那些經過千錘百煉凝出來的經典代碼,是進步的最好方法。 另外,要強調的是,學習一項技術過程中可能會遇到困難,可能會迷茫,你也許學了一半的PHP,又開始打C#的主意,或者有人說Java很好,這個時候你絕對不能動搖,要堅持到底,徹底學會。 祝你順利學成PHP,開發自己想要的網站
最後,分享10條PHP性能優化的小技巧,幫助你更好的用PHP開發:
1、、foreach效率更高,盡量用foreach代替while和for循環
2、、循環內部不要聲明變數,尤其是對象這樣的變數
3、、在多重嵌套循環中,如有可能,應當將最長的循環放在內層,最短循環放在外層,從而減少cpu跨循環層的次數,優化程序性能
4、、用單引號替代雙引號引用字元串以實現PHP性能優化
5、、用i+=1代替i=i+1。 符合c/c++的習慣,效率還高
6、優化Select SQL語句,在可能的情況下盡量少的進行Insert、Update操作,達到PHP性能優化的目的
7、、盡量的少進行文件操作,雖然PHP的文件操作效率也不低的
8、、盡可能的使用PHP內部函數
9、、在可以用PHP內部字元串操作函數的情況下,不要用正則表達式
10、feof、fgets、fopen、在可以用file_get_contents替代file、系列方法的情況下,盡量用 file_get_contents,因為它的效率高得多。 但是要注意file_get_contents在打開一個URL文件時候的PHP版本問題