【问题标题】:PHP: MVC and DRYPHP:MVC 和 DRY
【发布时间】:2010-05-07 12:19:19
【问题描述】:

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

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

【问题讨论】:

    标签: php model-view-controller controller dry


    【解决方案1】:

    除非您使用一些晦涩难懂的框架以某种方式阻止这种情况,否则您应该能够从类/实例中调用方法,而不管该类/实例是控制器还是其他东西。

    如果您发现自己编写的代码需要跨多个控制器重用,您可以考虑编写一个 BaseController 并将常用功能移到这个控制器中,或者 - 更好的是 - 将常用功能分离到帮助类中,然后您可以实例化并调用它一经请求。基本上,如果您需要 all 控制器中的某些内容,请将其移至 BaseController。如果您在 一些 控制器中需要它,请将其设为助手。如果您只需要在一个特定的控制器中使用它,请保留它。

    【讨论】:

    • 我只是想找到做 PHP 的最佳实践。 :)
    【解决方案2】:

    为什么不呢?

    这完全取决于你,但我真的不明白为什么要避免 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
    

    取决于你想使用某些控制器的目的。

    这完全取决于你;你可以把你自己的方法放在你想要的任何地方,然后从你想要的任何地方调用它们:)

    【讨论】:

    • 酷,我们是同时提交的。那应该给一个徽章:D
    • 是的,并不经常发生 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 2023-01-31
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多