php 代碼混淆為什么我們要培養(yǎng)自己的編碼規(guī)范?(圖)php源碼混淆類(lèi)加密
2022-05-02
我們?yōu)槭裁匆囵B(yǎng)自己的編碼標(biāo)準(zhǔn)?
當(dāng)我們編寫(xiě)代碼時(shí),一個(gè)好的編碼標(biāo)準(zhǔn)可以給我們帶來(lái)很多意想不到的效果。至少有以下好處:
1、提高我們的編碼效率。整齊統(tǒng)一的代碼方便我們復(fù)制粘貼!
2、提高代碼可讀性。
3、展示我們的專(zhuān)業(yè)知識(shí)。別人看了我們的代碼,發(fā)現(xiàn)整個(gè)代碼的編寫(xiě)過(guò)程整齊劃一,瞬間就上去了!
4、便于團(tuán)隊(duì)合作。大家都用同一個(gè)規(guī)范,這樣就省去了各種寫(xiě)法,協(xié)調(diào)一致!
編碼規(guī)范由代碼規(guī)范和注釋規(guī)范兩大塊組成
其實(shí)我們寫(xiě)的php腳本其實(shí)是由兩部分組成,分別是代碼的編寫(xiě)和代碼的注解!不同的框架,甚至不同的公司,在這方面都會(huì)有不同的看法。這就是剛才所說(shuō)的,只是對(duì)自己的寫(xiě)作規(guī)范的一個(gè)總結(jié)!希望對(duì)其他朋友有所啟發(fā)
1、代碼編寫(xiě)規(guī)范
文件夾命名:
對(duì)同一文件夾使用小寫(xiě)字母。比如存放控制器的文件夾可以直接命名為
文件命名:
如果是文件,那么文件的命名要保持同名一致,統(tǒng)一使用大駝峰大小寫(xiě)。如..php,對(duì)應(yīng)的類(lèi)名是,
如果是常用的工具腳本,那么統(tǒng)一使用小駝峰案例,比如.php
類(lèi)名的命名:
同類(lèi)名使用大駝峰,類(lèi)
方法名命名:
統(tǒng)一使用小駝峰格,一般用動(dòng)詞+秩的形式來(lái)描述方法的功能,比如發(fā)送短信。
在面向?qū)ο笾?,遵循相同的?guī)則,但有一些不同:
public getUserName() protected _getTotalAmount() private _setBlanceAmount()
變量命名約定:
關(guān)于變量,我們需要多說(shuō)幾句:
1、無(wú)論是面向?qū)ο筮€是非面向?qū)ο蟮恼Z(yǔ)法網(wǎng)站建設(shè),變量都統(tǒng)一使用小駝峰式,如:$。
但是在面向?qū)ο笾芯筒灰粯恿?,?dāng) , , , 或?qū)傩郧凹?_ 作為區(qū)分
public $startPosition = 1; protected $_salaryAmount =1000; private $_sex = 'formale';
2、如果是常量,統(tǒng)一使用大寫(xiě),下劃線分隔。
define('CURRENT_SCRIPT', 'index.php'); const TRANSACTION_TYPE = 'income';
3、全局變量,大駝峰大小寫(xiě),前綴_,所有單詞首字母大寫(xiě)。因?yàn)橹雷兞康淖饔糜蚝苤匾?,所以局部變量和全局變量要分清楚?/p>
$;
$;
縮進(jìn)
關(guān)于編碼的縮進(jìn),我們統(tǒng)一使用制表符縮進(jìn)!有人可能會(huì)問(wèn),為什么空格縮進(jìn)不適用?
原因很簡(jiǎn)單php 代碼混淆,大部分編輯器都支持制表符等于多少個(gè)空格,使用空格不是必須的!
計(jì)算符號(hào)
所有二元運(yùn)算符都應(yīng)該在前面和前面加空格
$name = 'zero'; $age > 18 ? 'adult' : 'children';
通用過(guò)程報(bào)表規(guī)劃
我們同意所有流程語(yǔ)句的大括號(hào)都在單獨(dú)的行上。原因:如果遇到比較復(fù)雜的業(yè)務(wù)邏輯,會(huì)有很多花括號(hào)的嵌套,所以我們會(huì)混淆對(duì)應(yīng)的花括號(hào)!
1、分支聲明
if($age >= 18 && $age <= 30) { echo 'young man'; } else if($age > 30 && $age <= 60) { echo 'middle aged'; } else { echo 'old man'; } //下面這段代碼高手我們一個(gè)問(wèn)題,在if語(yǔ)句中,即使在可以不要花括號(hào)的情況下,花括號(hào)也是要寫(xiě)上的 if($age > 60) { echo 'I am very old'; } switch($status) { case 'forbiden': echo 'login forbidden'; break; case 'normal': echo 'login in'; break; default: echo 'status is wrong' : break; }
2、循環(huán)語(yǔ)句
while($condition) { statesments......; } foreach($arrayList as $arrayKey => $arrayItem) { states......; } do { statements......; } while($condition) for($start; condition; changenumber) { statements......; }
2、評(píng)論書(shū)寫(xiě)規(guī)范
很多人說(shuō)好的代碼不需要注釋。其實(shí)我個(gè)人認(rèn)為這是一句廢話(或許他是對(duì)的php 代碼混淆,除非他是整個(gè)團(tuán)隊(duì)中唯一的一個(gè),他什么都做,不需要看別人的代碼)。
個(gè)人觀點(diǎn)是:多寫(xiě)點(diǎn)評(píng)論,不管是對(duì)團(tuán)隊(duì)其他人還是自己,都很友好!
根據(jù)個(gè)人經(jīng)驗(yàn),注解至少有以下功能:
1、有助于提高代碼的可讀性,畢竟看你的評(píng)論比看你的代碼容易多了!
2、非常適合規(guī)劃自己的代碼布局!這樣做的原因是因?yàn)樗c代碼注釋的類(lèi)型有關(guān)。“有利于代碼的布局”,這種東西好像有點(diǎn)懸,光說(shuō)是看不懂,需要實(shí)例來(lái)支持!
3、因?yàn)槲覀兊淖⒔庖?guī)范是符合要求的,所以這個(gè)工具還可以生成代碼的大致描述,相當(dāng)于一本說(shuō)明書(shū)!
代碼注釋的類(lèi)型
1、屏蔽評(píng)論
塊評(píng)論,我覺(jué)得主要用在三個(gè)地方。php腳本的描述,一個(gè)大功能模塊的描述,當(dāng)注釋不能寫(xiě)在一行的時(shí)候,也應(yīng)該放在塊注釋中
2、行評(píng)論
行評(píng)論,我個(gè)人認(rèn)為他與塊評(píng)論一起工作!一般用來(lái)描述一個(gè)大功能模塊的具體細(xì)節(jié)!
實(shí)際案例
關(guān)于語(yǔ)法的具體使用細(xì)節(jié),這里就不多說(shuō)了。官網(wǎng)說(shuō)的再清楚不過(guò)了。
從上面的例子可以看出代碼的布局大致如何,但是在實(shí)踐中還是需要慢慢摸索
以下是一些php編程規(guī)范供大家參考。
一、文件標(biāo)簽:
1.所有 php 文件都標(biāo)有完整的 php 標(biāo)簽。不推薦使用短標(biāo)簽(短標(biāo)簽容易與xml混淆,php從5.4開(kāi)始默認(rèn)不支持短標(biāo)簽)。
2.對(duì)于 php-only 代碼文件,建議在末尾省略 '?>'。這是為了防止多余的空格或其他字符影響代碼。
二、文件和目錄命名
1.程序文件名和目錄名用有意義的英文命名,不要使用拼音和無(wú)意義的字母,只允許字母、數(shù)字、下劃線和下劃線,必須以'.php'結(jié)尾(模板文件除外),在多個(gè)單詞之間使用駝峰式大小寫(xiě)。
示例: //該類(lèi)統(tǒng)一采用:..php
//接口統(tǒng)一采用:..php
//其他按自己的方式:.{}.php
三、文件目錄結(jié)構(gòu)
標(biāo)準(zhǔn)化的目錄結(jié)構(gòu)便于團(tuán)隊(duì)協(xié)作開(kāi)發(fā)和后期維護(hù)。
--app //獨(dú)立應(yīng)用
—— //單個(gè)類(lèi)文件,共享類(lèi)文件
--conf/inc //配置文件或目錄
--data //數(shù)據(jù)文件或目錄
--doc //程序相關(guān)文檔
-- //
—— //所有圖片文件存放路徑
——css //css文件
——js //js文件
——lib //共享類(lèi)庫(kù)
—— //模板文件
——tmp //臨時(shí)文件目錄
-- //緩存文件
- //文檔
—— //編譯后的模板文件
——
- //上傳文件
—— //后臺(tái)管理文件目錄
四、 命名約定
1.變量命名:PHP 中的變量區(qū)分大小寫(xiě)。有效的變量名稱(chēng)以數(shù)字、字母或下劃線開(kāi)頭,后跟任意數(shù)量的字母、數(shù)字和下劃線。
a) 程序整體采用駝峰式命名,以小寫(xiě)字母開(kāi)頭,名稱(chēng)要有意義。( ())
b) PHP 全局變量鍵值兩邊都有'_',中間用駝峰命名。($[''])
c) 普通變量整體采用駝峰式,建議在變量前加前綴表示類(lèi)型。不確定類(lèi)型以大寫(xiě)字符開(kāi)頭。
d) 函數(shù)名稱(chēng)應(yīng)盡可能有意義并盡可能縮寫(xiě)。
2.類(lèi)和接口命名:
a) 以大寫(xiě)字母開(kāi)頭。
b) 由多個(gè)單詞組成的變量名,單詞之間沒(méi)有空格,每個(gè)單詞的首字母大寫(xiě)。
c) 類(lèi)名與類(lèi)文件名一致。
d) 程序中的所有類(lèi)名都是唯一的。
e) 抽象類(lèi)應(yīng)以 .
接口命名規(guī)則:
i) 采用與類(lèi)相同的命名規(guī)則,但在其名稱(chēng)前添加“i”字符網(wǎng)站模板,表示接口。
ii) 盡量使其與實(shí)現(xiàn)它的類(lèi)名保持一致。
3.數(shù)據(jù)庫(kù)命名:在數(shù)據(jù)庫(kù)相關(guān)的命名中,不會(huì)出現(xiàn)大寫(xiě)。
a) 所有表名都使用小寫(xiě)字母。
b) 表名使用相同的前綴,且前綴不能為空。
c) 對(duì)于由多個(gè)單詞組成的表名,使用“_”間隔。
d) 表字段命名規(guī)則。
i) 使用全部小寫(xiě)字母。
ii) 多個(gè)單詞不使用下劃線分隔。
iii) 用表名的第一個(gè)字母為常用字段添加前綴。
iv) 避免使用關(guān)鍵字和保留字。
五、注解規(guī)范
1.程序注釋?zhuān)簩?xiě)在代碼前面而不是后面,單行代碼按自定義寫(xiě)在代碼末尾;大段注釋采用/**/的形式,通常在文件或函數(shù)的頂部,'//在代碼內(nèi)部使用';評(píng)論不宜過(guò)多;代碼注釋?xiě)?yīng)該描述原因而不是什么,并向代碼閱讀者提供最重要的信息。
2.文件注釋?zhuān)何募⑨屢话惴旁谖募敳?,包括程序描述、作者、?xiàng)目名稱(chēng)、文件名、時(shí)間日期、版本信息,以及重要的使用說(shuō)明(類(lèi)調(diào)用、注意事項(xiàng), ETC。) 。版本更改應(yīng)修改版本號(hào)并添加注釋。
3.類(lèi)和接口注解:一般來(lái)說(shuō),一個(gè)文件只包含一個(gè)類(lèi)。
4.方法和函數(shù)注解:方法和函數(shù)注解是前面寫(xiě)的,通常需要標(biāo)明信息的主要可見(jiàn)性、參數(shù)類(lèi)型和返回值類(lèi)型。
/**
* 連接數(shù)據(jù)庫(kù)
* @$ 數(shù)據(jù)庫(kù)服務(wù)器地址
* @$ 數(shù)據(jù)庫(kù)用戶(hù)名
* @$ 數(shù)據(jù)庫(kù)密碼
*/
六、代碼風(fēng)格
1.縮進(jìn)和空格:使用4個(gè)空格作為縮進(jìn),不要使用Tab鍵;分配變量時(shí),等號(hào)兩邊要留空格。($url = '$_GET['url']';)
2.語(yǔ)句換行:盡量保證一行程序語(yǔ)句是一個(gè)句子;盡量不要讓一行代碼過(guò)長(zhǎng),80個(gè)字符以?xún)?nèi);如果一行代碼過(guò)長(zhǎng),請(qǐng)使用類(lèi)似'.='的方法換行; 對(duì)數(shù)據(jù)庫(kù)的SQL語(yǔ)句進(jìn)行操作時(shí),盡量不要在函數(shù)中寫(xiě)SQL語(yǔ)句,而是先用變量定義SQL語(yǔ)句,然后在執(zhí)行操作的函數(shù)中調(diào)用定義的變量。
3.更好的習(xí)慣:在你的代碼中使用下面列出的方法讓你的代碼更優(yōu)雅。
1):使用php中已經(jīng)存在的常量,而不是自己定義。
示例://換行符
回聲 $msg."\r\n";
回聲$味精,;
它是php中預(yù)定義的常量,表示一行的結(jié)束。根據(jù)所使用的系統(tǒng),代碼更具可移植性。
2):在 echo 中使用逗號(hào)作為連接符比使用 '.' 更美觀。作為連接器代碼。
3):?jiǎn)我?hào)比雙引號(hào)效率高,但在用法上有區(qū)別。學(xué)習(xí)使用函數(shù)。
示例://回聲
echo '每個(gè)'.$.' 大約有 '.($avg).'';
//
$ = '每個(gè) %s 有超過(guò) $d 個(gè)學(xué)生';
($,$,$平均);
4) : 詳細(xì)評(píng)論
5):不要濫用語(yǔ)法糖。句法糖是一種語(yǔ)言中的一條潛規(guī)則,即一種不具有普遍代表性的語(yǔ)法。
舉兩個(gè)例子,如何寫(xiě)出好的代碼
最經(jīng)典的算法,獻(xiàn)給面試路上的你
如果您現(xiàn)在正在面試 PHP,請(qǐng)查看基本面試問(wèn)題