您如何在應用程序中管理大型網址(包含大量查詢參數)?
例如,看一下來自eBay這個鏈接(不要點擊鏈接只是一個大的URL的一個例子):如何用很多查詢參數管理URL?
你可以看到很多則params的,其中不乏有奇怪,短的名字,如「_F」,「_sc」等
你不能使用你的應用程序的參數,可以你需要轉換的東西更「可讀」:
$readableName = $_GET['_f'];
,但隨後你最終有很多瓦爾的,而且很可能你需要所有的人都在一個功能,所以,不是每一個查詢參數一個新的變種,我們可以使用數組:
$readableParams['readableName'] = $_GET['_f'];
但後來我們結束有一個大陣列具有任意結構的,所以我認爲最好的辦法是有一個VO(DTO)對於那些參數,可以是這樣的:
$filterVo = new FilterVo();
$filterVo->readableName = $_GET['_f'];
這是確定的,但在這裏我們把這些代碼?我的意思是,從「罕見問詢參數」轉換爲「明確價值對象」的最佳地點在哪裏?
因爲我們也需要反過程,所以我們可以用數據創建一個VO,然後使用該VO中的正確查詢參數生成一個URL。
VO裏面? 助手URL類? 查看模型基類?
你如何管理這些網址有很多參數?
我選擇使用助手類(my views/view_model使用該類)來生成* all *我的鏈接,他們接受VO並返回鏈接。逆過程在適當的controller_action內。無論如何,我不確定這個解決方案,因爲將VO轉換爲RequestParams的代碼現在在兩個不同的地方。我不知道如何用POST params解決這個問題(POST請求不是鏈接,所以也許我需要一個額外的FormParamsGenerator助手)。也許在VO中使用toParam和fromParam更清潔(如果我們使用一個接口,甚至更多),我希望這是一種常見模式:( – Enrique
我同意在VO中使用to和from本身更清潔。答案,在VO中可以調用Form Utilities(幫助程序類)以便工作。至於你的POST與GET參數,你想要做的是將數據結構概括成你傳遞給你的幫助類的鍵值對的表結構(而不是使它成爲GET和POST特定數據),並將此輔助類擴展爲PostFormUtilities和GetFormUtilities,他們的工作是翻譯POST/GET的特定數據並將其轉換爲廣義表鍵值數據。 – momo
要回答你的問題,這是否是常見模式,答案是肯定的。不僅用於HTTP參數之間的映射,而且是任何類型映射(特別是DB到VO映射或XML到VO映射)的常見模式。在許多這些場景中,您將在VO或Utility類中具有等同於和來自函數的功能。如果你需要更多的澄清,讓我知道,我可以更新答案 – momo