为什么我们要培养自己的编码规范?
我们写代码的时候,一个好的编码规范,对我们来说能够起到很多意向不到的效果。至少会有一下的好处:
1、提高我们的编码效率。整齐划一的代码方便我们进行复制粘贴嘛!
2、提高代码的可读性。
3、显示我们专业。别人看到了我们的代码,发现整个代码的书写流程都整齐划一,瞬间逼格就上去了!
4、方便团队协同工作。大家使用同一的规范,这样就消除了五花八分的书写方式,同一协调!
编码规范包含两大块,代码规范和注释规范
其实我们所写的php脚本,其实也就是由两大块组成的,即对代码的书写、对代码的注释!不同的框架,甚至不同的公司,对这方面都会有所不同,这里只是已将之言,仅仅是对自己的书写规范进行一个总结!希望能对其他的朋友以启示
1、代码的书写规范
文件夹的命名:
文件夹同一使用小写字母。如存放控制器的文件夹,直接命名为controller即可
文件的命名:
如果是类文件的话,那么文件的命名应该同类名称保持一致,统一使用大驼峰。如Session.class.php , 对应类名称为Session,
如果是普通的工具脚本,那么统一使用小驼峰,如common.php
类名称的命名:
类名称同一使用大驼峰,Cookie类
方法名的命名:
统一使用小驼峰,一般使用 动词 + 名次 的形式来描述该方法的功能,如sendMessage,发送短信。
在面向对象中,遵循同样的规则,但是个别地方有所区别:
public getUserName()
protected _getTotalAmount()
private _setBlanceAmount()
变量的命名规范:
关于变量,我们需要多说几点:
1、无论在面向对象还是非面向对象的语法中,变量统一使用小驼峰,如:$workYears。
但是在面向对象中又有所不同,public 、 protected 、 private ,protected或者private属性的时候,前面加上了 _ 作为区别
public $startPosition = 1;protected $_salaryAmount =1000; private $_sex = 'formale';
2、如果是常量的话,统一使用大写,中间使用下划线进行分割。
define('CURRENT_SCRIPT', 'index.php');const TRANSACTION_TYPE = 'income';
3、全局变量,使用大驼峰,前缀加上 _ ,所有的单词首字母大写。因为知道一个变量的作用域是非常重要的,所以局部变量和全局变量应该很明显的进行分开!
$_System_Config;$_Root_Path;
缩进符
关于编码的缩进符号,我们统一使用制表符缩进!也许有的人会问为什么不适用空格缩进的呢?
原因很简单,大部分的编辑器都支持制表符等于多少个空格,而使用空格就没得调了!
运算符号
所有的两元运算符号,都应该前后使用空格进行
$name = 'zero';
$age > 18 ? 'adult' : 'children';
常见的流程语句规划
我们约定,所有的流程语句的花括号都单独占据一行。理由:如果遇到较为复杂的业务逻辑,花括号会出现很多的嵌套,这样一来我们会混淆个个对应的花括号!
1、分支语句
if($age >= 18 && $age <= 30) { echo 'young man';}else if($age > 30 && $age <= 60){ echo 'middle aged';}else{ echo 'old man';}//下面这段代码高手我们一个问题,在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、循环语句
while($condition){ statesments......;}
foreach($arrayList as $arrayKey => $arrayItem){ states......;}
do{ statements......; }while($condition)
for($start; condition; changenumber){ statements......;}
2、注释的书写规范
很多人说好的代码是不需要注释的,其实,个人认为这是一句很扯淡的话(也可能他是对的,除非整个团队就他一个人,他包办了一切,不用看别人的代码)。
个人的观点是:多写注释,无论是对团队的其他人,还是对自己都是非常友好的!
根据个人的经验来看,注释至少有以下几个作用:
1、有利于提高代码的可读性,毕竟读你的注释要比读你的代码要容易的多!
2、有利于规划自己的代码布局!之所以这么说,是因为和代码注释的种类有关。“有利于代码的布局”,这种看着有点悬的事,光说是说不明白的,我们需要实实在在的例子做支撑!
3、由于我们的注释规范是按照phpdocumentor的要求,所以通过这个工具,还可以生成一份对代码的总体说明,相当于一个使用说明书!g
代码注释的种类
1、块注释
块注释,个人认为主要用在了三个地方。对php脚本的描述、对一个大的功能模块的描述、在一行之内不能写完注释的时候,也应该放在块注释中
2、行注释
行注释,个人认为他是配合块注释进行工作的!一般用于描述一个大的功能模块的具体细节!
实战的案例
关于phpdocumentor语法的具体使用细节,这里就不多说了,官网上说的再清楚不过了
从上面的例子中我们可以看一下代码的布局大致是怎么回事,但是还需要我们在实践中慢慢摸索

PHPSession失效的原因包括配置錯誤、Cookie問題和Session過期。 1.配置錯誤:檢查並設置正確的session.save_path。 2.Cookie問題:確保Cookie設置正確。 3.Session過期:調整session.gc_maxlifetime值以延長會話時間。

在PHP中調試會話問題的方法包括:1.檢查會話是否正確啟動;2.驗證會話ID的傳遞;3.檢查會話數據的存儲和讀取;4.查看服務器配置。通過輸出會話ID和數據、查看會話文件內容等方法,可以有效診斷和解決會話相關的問題。

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

在PHP中配置會話生命週期可以通過設置session.gc_maxlifetime和session.cookie_lifetime來實現。 1)session.gc_maxlifetime控制服務器端會話數據的存活時間,2)session.cookie_lifetime控制客戶端cookie的生命週期,設置為0時cookie在瀏覽器關閉時過期。

使用數據庫存儲會話的主要優勢包括持久性、可擴展性和安全性。 1.持久性:即使服務器重啟,會話數據也能保持不變。 2.可擴展性:適用於分佈式系統,確保會話數據在多服務器間同步。 3.安全性:數據庫提供加密存儲,保護敏感信息。

在PHP中實現自定義會話處理可以通過實現SessionHandlerInterface接口來完成。具體步驟包括:1)創建實現SessionHandlerInterface的類,如CustomSessionHandler;2)重寫接口中的方法(如open,close,read,write,destroy,gc)來定義會話數據的生命週期和存儲方式;3)在PHP腳本中註冊自定義會話處理器並啟動會話。這樣可以將數據存儲在MySQL、Redis等介質中,提升性能、安全性和可擴展性。

SessionID是網絡應用程序中用來跟踪用戶會話狀態的機制。 1.它是一個隨機生成的字符串,用於在用戶與服務器之間的多次交互中保持用戶的身份信息。 2.服務器生成並通過cookie或URL參數發送給客戶端,幫助在用戶的多次請求中識別和關聯這些請求。 3.生成通常使用隨機算法保證唯一性和不可預測性。 4.在實際開發中,可以使用內存數據庫如Redis來存儲session數據,提升性能和安全性。

在無狀態環境如API中管理會話可以通過使用JWT或cookies來實現。 1.JWT適合無狀態和可擴展性,但大數據時體積大。 2.Cookies更傳統且易實現,但需謹慎配置以確保安全性。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載
最受歡迎的的開源編輯器