2012-01-11 20 views
1

我不知道這是否只是我還是沒有,但我要像語言任何C一行IFS過敏,我總是喜歡看後,如果大括號,所以不是有沒有在PHP中修復一行ifs的自動方法?

if($a==1) 
    $b = 2; 

if($a==1) $b = 2; 

我想看到

if($a==1){ 
    $b = 2; 
} 

我想我可以爭辯說,第一個是更容易出錯支持我的偏好,它具有較小的可讀性。

我現在的問題是,我正在處理一個代碼,這些代碼與這一行ifs,我想知道是否有某種實用工具,這將幫助我糾正這些ifs,某種PHP代碼美化器那會做到這一點。

我也在想開發一些可以用於linux的sed命令的正則表達式來完成這個任務,但我不確定這是否甚至有可能,因爲正則表達式應該匹配一行ifs,然後包裝它們與curley括號,所以邏輯將是找到一個if和條件語句,然後查找{在條件之後,如果沒有找到,然後換行或換行之前的下一組字符,然後包裝它與{和}

您怎麼看?

+2

如果這是屬於團隊的代碼,請在對代碼約定做出任何更改之前諮詢他們(除非代碼違反書面標準文檔) – 2012-01-11 19:24:15

+1

更改工作代碼批發以符合您的偏好將不會有用從長遠來看,你或你的團隊。如果你發現自己使用的代碼不符合你喜歡的風格,那麼繼續並改變它(只要這種改變不會踩在你沒有討論過的團隊成員的腳趾上),但不要去僅僅爲了風格而改變與您當前任務無關的文件。 – 2012-01-11 19:31:41

+2

我明白你來自哪裏(我總是使用花括號),但我會擔心完全搞砸代碼的解析錯誤。就個人而言,無論何時我需要與別人合作代碼(並且他們不再負責它),我都會手動完成並根據我的喜好重新格式化所有內容。這需要時間,但我會閱讀並理解所有的代碼。 – MrGlass 2012-01-11 19:34:32

回答

1

最好的辦法是使用內置的PHP標記器,並解析生成的標記流。

看到這個答案有關PHP標記生成器的詳細信息:https://stackoverflow.com/a/5642653/1005039

您還可以看看劇本我寫來解析PHP源文件以修復舊代碼的另一個常見的問題,即解決未加引號的數組索引: https://github.com/GustavBertram/php-array-index-fixer/blob/master/aif.php

該腳本使用狀態機而不是廣義分析器,但在您的情況下它可能已經足夠好了。

+0

幹得好,帽子給你 – Yasser1984 2012-11-22 20:09:19

相關問題