本文主要和大家分享PHP程式碼樣式風格規格,希望能幫助大家。
一、基本約定
1、原始檔
(1)、純PHP程式碼原始檔只使用 ;
(2)、原始檔中PHP程式碼的編碼格式必須是無BOM的UTF-8格式;
(3)、使用Unix LF(換行符號)作為行結束符號;
(4)、一個原始檔案只做一種類型的聲明,即,這個檔案專門用來聲明Class, 那個檔案專門用來設定設定訊息,別混在一起寫;
2、縮排
使用Tab鍵來縮減,每個Tab鍵長度設定為4個空格;
3、行
一行推薦的是最多寫120個字符,多於這個字符就應該換行了,一般的編輯器是可以設定的。
//wo
補一條不出現橫滾屏和豎滾屏,
4、關鍵字和True/False/Null
PHP的關鍵字,必須小寫,boolean值:true,false,null 也必須小寫。
下面是PHP的“關鍵字”,必須小寫:
'__halt_compiler', 'abstract', 'and', 'array', 'as', 'break' , 'callable', 'case', 'catch', 'class', 'clone', 'const', 'continue', 'declare', 'default', 'die', 'do', 'echo', ' else', 'elseif', 'empty', 'enddeclare', 'endfor', 'endforeach', 'endif', 'endswitch', 'endwhile', 'eval', 'exit', 'extends', 'final' , 'for', 'foreach', 'function', 'global', 'goto', 'if', 'implements', 'include', 'include_once', 'instanceof', 'insteadof', 'interface', ' isset', 'list', 'namespace', 'new', 'or', 'print', 'private', 'protected', 'public', 'require', 'require_once', 'return', 'static' , 'switch', 'throw', 'trait', 'try', 'unset', 'use', 'var', 'while', 'xor'
5、命名
(1)、類別名稱使用大駝峰式(StudlyCaps)寫法;
(2)、(類別的)方法名稱使用小駝峰(cameCase)寫法;
( 3)、函數名稱使用小寫字母+ 底線寫法,如function http_send_post();
(4)、變數名稱使用小駝峰寫法,如$userName;
6、程式碼註解標籤
如函數註解、變數註解等,常用標籤有 @package、@var、@param、@return、@author、@todo、@throws
必須遵守phpDocument 標籤規則,不要另外去創造新的標籤,更多標籤查看 phpDocument官網
7、業務模組
(1)、涉及多個資料表更新/新增作業時,最外層要用事務,確保資料庫操作的原子性;
(2)、Model層,只做簡單的資料表的查詢;
(3)、業務邏輯統一封裝到Logic層;
(4)、控制器只做URL路由,不要當作業務方法呼叫;
(5)、控制器層不能出現SQL操作語句,如 ThinkPHP框架的where()、 order() 等模型方法,
即,控制器中,不要出現類似這樣的SQL語句:D('XXX')->where()->order()->limit( )->find();
where()、order()、limit() 等SQL方法只能出現在Model層、業務層!
二、程式碼樣式風格
1、命名空間(Namespace) 和導入(Use)宣告
先簡單文字描述下:
命名空間(namespace)的宣告後面必須有一行空行;
所有的導入(use)宣告必須放在命名空間(namespace)宣告的下面;
一句宣告中,必須只有一個導入(use)關鍵字;
#在導入(use)宣告程式碼區塊後面必須有一行空行;
用程式碼來說明下:
1 2 3 4 5 # 6 |
namespace Lib\Databases; // 下方必須空格一行
#class Mysql {
} |
#namespace下空一行,才能使用use,再空一行,才能宣告class
1 2 3 4 5 #6 7 8 9 10 |
namespace Lib\Databases; // 下方必須一行
use FooInterface; // use 必須在namespace 後面宣告 use BarClass as Bar; #」Bar;##Bar; ##Bar;##Bar; ##Bar; #use OtherVendor\OtherPackage\BazClass; // 下方必須空格一行 class Mysql { |
2、類別(class),屬性(property)和方法(method)
(1)、繼承(extends) 和實作(implement) 必須和 class name 寫在一行。
1 2 #3 4 5 6 |
namespace Lib\Databaes;
class Mysql extends ParentClass implements \PDO , \DB { // 寫一行
} |
#(2)、屬性(property)必須宣告其可見性,到底是 public 還是protected 還是 private,不能省略,也不能使用var, var是php老版本中的什麼方式,等用於public。
1 2 #3 4 5 6 7 8 |
namespace Lib\Databaes; # class Mysql extends ParentClass implements \PDO, \DB { // 寫一行 public $foo = null;# # protected $age = '17';} | #
1 2 #3 4 5 6 7 8 |
namespace Lib\Databaes; # class Mysql extends ParentClass implements \PDO, \DB { // 寫一行 public getInfo($name, $age, $gender = 1) { 空格。預設參數的「=」左右各有一個空格,) 與{ 之間有一個空格
# } #} |
(4)、當用到抽象(abstract)和終結(final)來做類別宣告時,它們必須放在可見性宣告(public 還是protected還是private)的前面。而當用到靜態(static)來做類別宣告時,則必須放在可見性宣告的後面。
直接上程式碼:
1 #2 3 4 5 6 7 8 #9 #10 #11 |
##namespace Vendor\Package; abstract class ClassName { protected static $foo; // static放後面 abstract protected function zim(); // abstract放前面 前面,static放下最後。 // 方法主體部份 }} |
3、控制結構
控制接口,就是 if else while switch等。這一類的寫法規範也是常常容易出現問題的,也要規範一下。
(1)、if,elseif,else寫法,直接上規範代碼吧:
##123456#78 | if ($expr1) { // if 與( 之間有一個空格,) 與{ 之間有一個空格 # } elseif ($expr2) { // elesif 連著寫,與( 之間有一個空格,) 與{ 之間有一個空格 #} else { // else 左右各一個空格 } |
123456789#10#1112 1314151617 |
switch ($expr) { // switch 與( 之間有一個空格,) 與{ 之間有一個空格 case 0: a break'; // 對位 break; // 換行寫break,同樣對齊。 case 1: echo 'Second case, which falls through'; # 2 case 3: case 4:# echo 'Third case, return instead of break, ## # echo 'Default case'; break;}
(3)、while,do while 的寫法也類似,上碼:
|
以上是PHP程式碼樣式風格規範分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

tostartaphpsession,usesesses_start()attheScript'Sbeginning.1)placeitbeforeanyOutputtosetThesessionCookie.2)useSessionsforuserDatalikeloginstatusorshoppingcarts.3)regenerateSessiveIdStopreventFentfixationAttacks.s.4)考慮使用AttActAcks.s.s.4)

會話再生是指在用戶進行敏感操作時生成新會話ID並使舊ID失效,以防會話固定攻擊。實現步驟包括:1.檢測敏感操作,2.生成新會話ID,3.銷毀舊會話ID,4.更新用戶端會話信息。

PHP会话对应用性能有显著影响。优化方法包括:1.使用数据库存储会话数据,提升响应速度;2.减少会话数据使用,只存储必要信息;3.采用非阻塞会话处理器,提高并发能力;4.调整会话过期时间,平衡用户体验和服务器负担;5.使用持久会话,减少数据读写次数。

PHPsessionsareserver-side,whilecookiesareclient-side.1)Sessionsstoredataontheserver,aremoresecure,andhandlelargerdata.2)Cookiesstoredataontheclient,arelesssecure,andlimitedinsize.Usesessionsforsensitivedataandcookiesfornon-sensitive,client-sidedata.

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver CS6
視覺化網頁開發工具

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版