PHP:MVC和DRY

时间:2010-05-07 12:19:20

标签: php model-view-controller controller dry

关于控制器的问题。 控制器可以在动作中调用它自己的类方法吗?

编辑: 哦对不起。我的意思是我不想重复自己。 :)

2 个答案:

答案 0 :(得分:2)

除非你使用某种模糊的框架以某种方式阻止这种情况,否则你应该能够在类/实例中调用方法,无论类/实例是Controller还是其他东西。

如果您发现自己编写的代码需要跨多个控制器重用,您可以考虑编写一个BaseController并将常用功能移动到这个或更好的单独的常用功能中,然后将其实例化并调用一经请求。基本上,如果您需要所有控制器中的某些内容,请将其移动到BaseController。如果您需要在某些控制器中使用它,请将其作为帮助程序。如果您只需要在一个特定的控制器中使用它,请将其保留在那里。

答案 1 :(得分:0)

为什么不呢?

这完全取决于你,但我真的没有看到避免DRY(LOL)的原因。 MVC的意义是分离控制器/模型/视图,没有别的:)

修改 仍然可以,控制器可以在操作中调用它自己的方法。好的做法是给动作方法命名,比如action_something或something_action,并且有一个“基础”控制器,你可以在以后扩展它。等;

Controller
Controller_Application extends Controller
Controller_Layout extends Controller_Application

其中第一个是某种“抽象”(面向框架),而其他人会处理应用程序逻辑。所以以后你会......

Controller_Forum extends Controller_Layout
Controller_News extends Controller_Layout
Controller_Ajax extends Controller_Application

取决于您想要使用某个控制器的内容。

这完全取决于你;你可以把你自己的方法放在任何你想要的地方,并从你想要的地方打电话:)