2017-09-14 50 views
0

我的PhpStorm 2017.2項目要求每個新文件都是從特定的文件創建的。在「設置>>編輯>>文件和代碼模板>> PHP文件」,我有以下的模板:PhpStorm:可以更新每個文件編輯的文件模板?

<?php 
/** 
* @author John Doe 
* @copyright ${YEAR} Acme 
* @created ${DATE} 
* @modified ${DATE} 
*/ 

這種運作良好。 PhpStorm動態填充年份和日期。但是,當我稍後回來並對文件進行更改時,我總是需要記住手動更改@modified行。有沒有一種方法可以自動執行此操作,以便onSave或onCommit(用於版本控制的文件),行更新當前值爲${DATE}

+0

模板是「靜態的」。這意味着:一旦它用於文件(代碼模板:例如爲一個類創建PHPDoc)或創建一個文件(文件模板),文本現在沒有與原始模板的「鏈接」,因爲它只是文件中的文本。 – LazyOne

回答

2

不可能ATM。

https://youtrack.jetbrains.com/issue/IDEABKL-7178 - 觀看此票(明星/投票/評論)以獲得任何進展的通知。目前沒有計劃在最近的將來實施類似的東西。另一方面(如上述票據中的評論所述) - 查看標準的「版權」插件是否有任何幫助(從未自己使用過,因此不知道它究竟能做什麼)。


一個可能的解決需要編寫自己的腳本/程序(PHP或者你可以使用任何其他語言),將分析文件(正則表達式匹配應該做的罰款在這裏 - 沒有真正的需要去到和解析文件轉換爲標記),並更新這些信息:

  • 看看每行,直到匹配線會被發現(一些衛邏輯可以被添加到限制的行數要解析:如果沒有匹配的行中發現的首先xx(例如20)行假定這個文件沒有這樣的註釋/行);
  • 根據文件修改時間戳更新日期/時間部分。

一旦你有這樣的腳本 - 只需使用File Watcher功能,這樣它就會在每個文件修改時被調用。

可能帶來的負面:當檢測到文件的修改時文件看守被觸發...這可以包括外所做的更改(例如,從遠程主機的其他編輯器/下載/其它VCS分支的/ etc))。這可能導致不必要/不需要的更新。

如果File Watcher功能不適合任何原因 - 請查看grunt -watch或類似的地方,您可以輕鬆禁用監視(因此只有當您的監視器(build runner)正在監視時纔會調用您的腳本。

+0

非常感謝您花時間回答。 – BeetleJuice