PHP-前端控制器模式。一个巨大的开关语句

PHP-前端控制器模式。一个巨大的开关语句,php,design-patterns,Php,Design Patterns,我将前端控制器模式与命令解析器类结合使用,该类的唯一功能是将视图中的请求映射到命令对象 一切都很好,但我开始怀疑我的实现,它基本上由一个switch语句组成,实际上是否是一个糟糕的实践 使用XML文件替换此switch语句,或者将请求物理映射到命令类中的文件(即,请求名称将是文件名)是更好的做法,还是switch语句可以用于此目的 编辑:我使用的是MVC,前面的控制器存在于控制器中。这更像是设计模式问题中的一种设计模式。使用switch,您可以进行大量硬编码。写命令功能如何?它将检查可能的文件数

我将前端控制器模式与命令解析器类结合使用,该类的唯一功能是将视图中的请求映射到命令对象

一切都很好,但我开始怀疑我的实现,它基本上由一个switch语句组成,实际上是否是一个糟糕的实践

使用XML文件替换此switch语句,或者将请求物理映射到命令类中的文件(即,请求名称将是文件名)是更好的做法,还是switch语句可以用于此目的


编辑:我使用的是MVC,前面的控制器存在于控制器中。这更像是设计模式问题中的一种设计模式。

使用switch,您可以进行大量硬编码。写命令功能如何?它将检查可能的文件数组(可能来自缓存,缓存将通过读取带有文件的目录填充一次),如果可以,则加载一个文件。

使用开关,您正在进行大量硬编码。写命令功能如何?该功能将检查可能的文件数组(可能来自缓存,缓存将通过读取文件目录填充一次),并在正常情况下加载文件。

前端控制器需要一个路由器类,通常与MVC设计模式一起使用

要了解如何避免切换,请参阅phpro.org上的本教程:


前端控制器需要一个路由器类,通常与MVC设计模式一起使用

要了解如何避免切换,请参阅phpro.org上的本教程:


对不起,我应该指定。我实际上使用的是MVC,前端控制器只是控制器的一个组件。对不起,我应该指定。我实际上使用的是MVC,前端控制器只是控制器的一个组件。建议不错。但这可能有点棘手,因为我的应用程序大量使用ajax,所以没有多少内容附加到URL中。@saddog:这应该给你一个想法:)很好的建议。但这可能有点棘手,因为我的应用程序大量使用ajax,所以没有多少内容附加到URL中。@saddog:这应该给你一个想法:)