我們經(jīng)常聽(tīng)到有人試圖用一個(gè)周末多點(diǎn)的時(shí)間來(lái)學(xué)會(huì)PHP,其實(shí)學(xué)習(xí)這門(mén)編程語(yǔ)言的一種非常糟糕的方式。為何說(shuō)學(xué)習(xí)PHP的過(guò)程有別于任何其它語(yǔ)言?
就其本質(zhì)而言,如果你摸透了了以PHP語(yǔ)言“做事”的方式,那么在使用它時(shí)就會(huì)得心應(yīng)手,甚至事半功倍,因此值得你去投入精力去了解這些方式。在PHP中,單純按照自己思路去解決問(wèn)題往往會(huì)是一種不恰當(dāng)?shù)霓k法。如果你想寫(xiě)出好的可操作性強(qiáng)的代碼,有些標(biāo)準(zhǔn)技巧是你必須要使用的。下面讓我們一起看一下你需要知道的9大技巧。
1、如何正確的創(chuàng)建一個(gè)網(wǎng)站的Index頁(yè)面
創(chuàng)建每一個(gè)網(wǎng)站時(shí),建立網(wǎng)站的index頁(yè)面是首要做的事情之一。如果你是一個(gè)PHP新手,在編寫(xiě)index頁(yè)面時(shí)典型的做法是只對(duì)index頁(yè)面所需的內(nèi)容進(jìn)行編程,其它鏈接創(chuàng)建另一個(gè)頁(yè)面。不過(guò),如果想學(xué)習(xí)一種更高效的方式來(lái)實(shí)現(xiàn)PHP編程,可以采用“index.php?page=home”模式,許多網(wǎng)站都在采用這種模式。
2、利用var_dump進(jìn)行PHP代碼調(diào)試
如果你在尋找php調(diào)試技術(shù),我必須說(shuō)var_dump應(yīng)該是你要找的目標(biāo)。在顯示php信息方面這個(gè)命令可以滿足你的所有需要。而調(diào)試代碼的多數(shù)情況與得到PHP中的數(shù)值有關(guān)。
3、PHP處理代碼邏輯,Smarty處理展現(xiàn)層
Smarty是一個(gè)使用PHP寫(xiě)出來(lái)的模板PHP模板引擎,是目前業(yè)界最著名的PHP模板引擎之一。它分離了邏輯代碼和外在的內(nèi)容,提供了一種易于管理和使用的方法,用來(lái)將原本與HTML代碼混雜在一起PHP代碼邏輯分離。簡(jiǎn)單的講,目的就是要使PHP程序員同前端人員分離,使程序員改變程序的邏輯內(nèi)容不會(huì)影響到前端人員的頁(yè)面設(shè)計(jì),前端人員重新修改頁(yè)面不會(huì)影響到程序的程序邏輯,這在多人合作的項(xiàng)目中顯的尤為重要。
4、使用Request Global Array抓取數(shù)據(jù)
實(shí)際上我們沒(méi)有任何理由使用$_GET和$_POST數(shù)組來(lái)抓取數(shù)值。$_REQUEST這個(gè)全局?jǐn)?shù)組能夠讓你獲取一個(gè)get或form請(qǐng)求。因此,多數(shù)情況下解析數(shù)據(jù)的更高效代碼大體如下:
- $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 0;
5、如果未定義,禁止訪問(wèn)!
如果你正確的創(chuàng)建了頁(yè)面,那么任何其他人沒(méi)有理由訪問(wèn)index.php或home.php之外的index.php頁(yè)面。一旦index.php被訪問(wèn)后,你可以通過(guò)獲得變量的方式來(lái)打開(kāi)需要的頁(yè)面。你的index頁(yè)面應(yīng)該包含類似的以下代碼:
- define('yourPage',1);
然后,其它頁(yè)面應(yīng)該包含:
- if (!defined('yourPage')) die('Access Denied');
這么做的目的是防止直接訪問(wèn)你的其它php頁(yè)面。這樣,任何試圖不通過(guò)index.php訪問(wèn)其它網(wǎng)頁(yè)的人,將得到“訪問(wèn)被拒絕”的消息。
6、了解你的SQL語(yǔ)句,并總是對(duì)其審查(Sanitize)
正如我以前所提到的,任何php網(wǎng)站中最重要的部分有99%的可能是數(shù)據(jù)庫(kù)。因此,你需要非常熟悉如何正確的使用sql。學(xué)會(huì)關(guān)聯(lián)表和更多高級(jí)技術(shù)。下面我將展示一個(gè)使用MySQL的函數(shù)示例,并使用本文第7條函數(shù)進(jìn)行審查。
- private function getSentMessages($id) <