【问题标题】:In an MVC Context, Where Do I Put A Class?在 MVC 上下文中,我应该在哪里放置一个类?
【发布时间】:2009-08-05 07:20:42
【问题描述】:

直截了当:

我正在使用 Kohana,我正在查看另一个用普通 PHP 编写的脚本。在脚本中,我有一个类 ShoppingCart。如果我要将脚本转换为 Kohana,我应该将类、它的方法和属性放在哪里?

它在我现有的默认控制器中吗?或者我应该把它放在一个单独的控制器中?或者听起来很菜鸟,我会把它放在模型中吗?

【问题讨论】:

    标签: php model-view-controller kohana


    【解决方案1】:

    这取决于我想的班级的具体情况。老实说,我对 Kohana 一无所知,但在某处可能有存放“供应商文件”的地方。也许最好把它放在那里并在你的控制器中为它编写包装函数。如果该类已经与 Kohana 很好地集成,您可以选择直接将其用作控制器或模型。或者您可能想花时间重写它以使其作为控制器工作......

    只有你可以评估它的最佳位置,这里没有硬性规定。

    【讨论】:

      【解决方案2】:

      Kohana 有一个用于 3rd 方库的文件夹。主要的在 system/vendor 下,你也可以把它放在你的 application/ 中。

      如果您希望自动加载类,许多 PHP 类加载器要求您的文件名等详细信息应与类名相同(至少我在 Kohana 文档中读到的内容是这样的)。

      【讨论】:

        【解决方案3】:

        如果您需要在您的应用中使用第 3 方代码,建议您在您的应用/模块文件夹中创建一个名为“vendor”的文件夹,并将所有代码放在那里。

        然后您可以通过调用来包含文件:

        include kohana::find_file('vendor', 'filename');
        

        如果需要,您还可以为外部库创建一个包装器,一个很好的例子是 the email helper,它使用 3rd 方 Swift 电子邮件库。

        如果您要将自己的课程移植到 kohana,那么您需要弄清楚该课程将做什么并相应地对其进行分类。

        如果该类将从某种数据库中获取项目,那么您应该将其设为模型。库通常是您希望跨控制器/模型重用的代码集,例如身份验证、日历生成等。控制器用于将数据从模型传递到您的视图/库。

        See the docs for more info

        【讨论】:

          【解决方案4】:

          根据 kohana 约定,您应该将自定义类放在 application/libraries 文件夹中。但是为此,您需要知道如何在将课程放在那里后让课程正常工作。如果你不能弄清楚,你可以做任何事情,比如把它放在你的控制器中或者制作另一个控制器等等。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-08-25
            • 1970-01-01
            • 2020-08-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-04-18
            相关资源
            最近更新 更多