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