最近在做項(xiàng)目解耦角骤,并將項(xiàng)目通用的文件制作成composer包投蝉。需要選擇性的對(duì)文件進(jìn)行挪動(dòng)和再封裝养葵。挪動(dòng)過(guò)程中,文件中會(huì)有其他文件的依賴(lài)瘩缆,如use ?xxx(命名空間路徑)关拒,一層一層文件下來(lái)各種嵌套,人工查找和遷移容易出錯(cuò)庸娱,故寫(xiě)了一個(gè)程序處理着绊。
1.遍歷指定文件夾下所有文件,打開(kāi)文件熟尉。
2.讀取文件內(nèi)容归露,正則匹配到"use XXX;",則解析XXX路徑為文件真實(shí)路徑,由于項(xiàng)目使用命名空間都遵循psr-4規(guī)范斤儿,故按psr-4規(guī)則剧包,替換頭部命名空間為對(duì)應(yīng)真實(shí)路徑即可。
3.檢測(cè)真實(shí)路徑下的文件is_readable,不可讀雇毫,則報(bào)錯(cuò)玄捕。可讀則遞歸處理該文件棚放。
改進(jìn):
1.如果A文件use B,B文件中又use A,這樣下來(lái)會(huì)無(wú)限遞歸下去枚粘,故在處理類(lèi)中增加一個(gè)靜態(tài)變量,存放處理過(guò)的文件飘蚯,從而減少了重復(fù)處理的現(xiàn)象馍迄,也避免了無(wú)限遞歸到最大深度,程序退出局骤。
2.程序只是報(bào)出不存在的文件攀圈,還是需要人手動(dòng)挪,故又加了一個(gè)方法峦甩,解析源路徑和目標(biāo)路徑赘来,exec一個(gè)cp命令。