繁体   English   中英

PHP:代码设计难题

[英]PHP: code design dilemma

这是一个没有任何实际问题的问题,只是我病态的产物,使事情变得有些奇怪:)

因此,我在自己的面向MVC的框架上构建了这个PHP应用程序(是的,我自己做而不是使用现有的框架)。 这是由本书完成的,因此我们有了模型(数据和数据库操作),视图(充满数据的模板和呈现输出)和控制器(处理请求,从模型中获取适当的数据,将数据放入视图中)。 经典且无聊的场景,其中请求路由使用.htaccess规则完成。

昨天,我对代码进行了一些更改,错误修复,几处改进等。我强烈希望重新安排控制器的代码。 他们感到有些沉重和肿,并且许多方法使浏览文件等困难。 我确定每个人都知道我在说什么。

我正在考虑将我的控制器类分为许多类,每个类仅处理一种类型的请求,例如登录或注册或showProfile或killMe。

现在,控制器类具有对应于用户友好(或SEO友好)URL的各个部分的公共方法,而路由类则根据URL内容调用适当的控制器及其方法。

我正在考虑的更改将使一些路由机制转变为调用特定的控制器,并且它是Execute()方法。

例如,对于url =“ www.example.com/users/login”,现在看起来像这样:

$controller = new url[0]();
$method = url[1];
echo $controller->$method();

现在网址将更改为“ www.example.com/login”,路由代码如下所示:

$controller = new url[0]();
controller->Execute();

我省略了解析URL并从中提取路由信息的部分,因为这与我的问题无关。

我看到这种变化有什么好处?

  • 每个请求一个专门的课程
  • 较小的文件
  • 较小的代码
  • 易于维护
  • 添加新功能(新请求类型)或修复错误时,损坏工作控制器的危险有限

劣势?

  • 可能很多课
  • 可能打击性能
  • ???

我的问题是,您对这个想法有何看法,这是否有意义? 当然,我比为什么应该更感兴趣为什么不应该这样做。 因此,如果您能想到任何会导致可怕的想法和可憎的原因,请在此为时已晚:)

编辑问题的澄清:

我在问我是否应该将我的单个大型控制器(它通过其方法来处理多种类型的请求)分解为许多小型控制器,每个小型控制器仅处理单一类型的请求。

现在,我有了控制器用户,它可以处理“登录”,“ showLoginForm”,“注册”,“激活”等请求。重构的代码将由用于每个请求的单独控制器组成。

对于旧方法和新方法,我都可以想到的一个缺点是您将url直接映射到类名。 如果您想更改网址,则必须更改类名。 如果您想为不同的语言使用不同的URL,则必须添加一层将URL始终映射到类名的图层。 这就是为什么我宁愿有一个路由类,该类将url映射到类名,从而为您提供了一种可以更改内容的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM