您如何在应用中管理大型网址(包含大量查询参数)?
例如,从易趣看这个链接(不要点击链接只是一个大URL的例子):
你可以看到很多参数,其中很多都有奇怪的短名称,如“_f”,“_ sc”等。
你不能在你的应用程序中使用这些参数,你需要转换为更“可读”的东西:
$readableName = $_GET['_f'];
但是你结束了很多变量,并且你可能需要在函数中使用它们,所以,对于每个查询参数,我们可以使用数组而不是新的var:
$readableParams['readableName'] = $_GET['_f'];
但接着我们以一个具有任意结构的大数组结束,所以我认为最好的想法是为这些参数设置一个VO(DTO),例如:
$filterVo = new FilterVo();
$filterVo->readableName = $_GET['_f'];
那没关系,但我们把代码放在哪里?我的意思是,从“罕见的quer params”转换为“clear value objects”的最佳位置在哪里? 因为我们还需要逆过程,所以我们可以使用数据创建一个VO,然后使用来自该VO的正确查询参数生成一个URL。
在VO内? 帮助程序URL类? 查看模型基类?
您如何使用大量参数管理这些网址?
答案 0 :(得分:1)
有趣的是,你提出的输入名称是神秘的。我将在一般意义上(不仅仅是PHP细节)回答我在我认为与本主题相关的项目中看到的内容。一般方法:
getUsername()
,然后表单实用程序会将其转换为<input name="username"/>
。 fromForm(input)
和toForm()
的VO / Bean基类的项目,它们使用上面提到的Form Utilities。它为开发人员提供了便利,因此他们不必处理Form Utilities,只需从他们的对象中调用toForm()
和fromForm(input)
来处理转换现在给出上面的模式,对于神秘的表单字段,我通常会看到:
toForm()
和fromForm(input)
答案 1 :(得分:0)
大多数参数都是自动生成的。我在很多ASP.NET应用程序中都看到过这种行为。而且我讨厌.NET做这些事情,但我不想再开始这个话题。
大多数情况下,这些附加参数是由嵌入式模块生成的。这些工作以自动方式工作,做一些没有直接反映在应用程序中的东西(应用程序开发人员至少写入的部分),或协助其他任务。这是一种跨请求维护状态的方法。
另一方面,您可以实现您描述的这种机制。在MVC环境中,此任务将由Controller处理。这只有在你传递了很多GET参数时才有意义。你应该从一开始就试着避免这种做法。