敏捷工具包4并实现不同的数据库(mongodb)

时间:2011-07-25 05:53:44

标签: atk4

问题:我需要知道的是如何将不同的数据库(mongodb)合并到ATK4中? 具体做法是:

  1. 我应该只创建与数据库的连接并在每个模型中使用crud,还是应该将其抽象到库中?
  2. 如果我将其抽象为模型,我将如何从模型内部调用方法?
  3. 一些注意事项:

    1. 在.net中,显而易见的答案是抽象它,我使用mongo和asp.net mvc在我的项目上完成了,但是当涉及到php时,我总是一个菜鸟,所以我不确定这些惯例是什么。
    2. Code Igniter使得加载库变得非常容易,我想知道ATK4是否也是一样的?
    3. 我已阅读了所有文档并浏览了测试文档中的教程。
    4. 关于我的一些事情:我是php的总菜鸟。我的主要编码框架是.NET(vb& c#(winforms和asp(webforms和mvc)))

      我一直在玩CodeIgniter并喜欢它。我的一位同事让我看看ATK4,我必须说到目前为止我对此印象深刻。

      但是,如果我要为我的项目采用ATK4,我需要能够使用MongoDB。让我说清楚:我不是要求任何人为我编写代码。我只需要一些关于php和atk4约定的指导。关于这些事情的网站上的文档目前有点稀疏(不存在)。

1 个答案:

答案 0 :(得分:0)

你有两个选择,都是抽象的。首先涉及创建模型和控制器,网格和其他视图将自动识别。第二,您需要从MongoDB获取数据并插入静态表。

支持Mongo的观点

这种方法要求您了解模型的运作方式。特别是你需要了解MVCGrid,setController,setModel以及mvc / Controller.php。然后,您需要创建自己的控制器。然后你需要拥有使用你的控制器的AbstractView :: setModel()的副本,它将正确地知道如何从MongoDB获取数据。

此外,您可能需要扩展Grid(或MVCGrid)以正确传输数据。

完成后,您可以这样做:

$形式 - > setMongoModel( '为MyModel') - > loadData(123);

(如果你使用的是GIT版本,你可以实际注入这个方法: https://github.com/atk4/atk4-testsuite/blob/master/page/core.php#L108

半自动化方法

在这种方法中,您需要自己从MongoDB控制器加载数据并将其提供给网格或表单。网格和表单都可以很好地处理静态数据。在这种情况下,你需要这样的东西:

$c=$this->add('MongoController');
$data=$c->load($my_model,123);
$grid->setStaticSource($data);

您的其他任务的答案

Code Igniter是一个不错的框架,但它全局实例化对象。您不太可能需要2个相同库的实例。 Agile Toolkit允许通常使用和控制器。因此,在ATK4对象彼此绑定时,您几乎负责CI中的数据管理。这是这些库中方法之间的核心差异。

CI中的图书馆:

$this->load->library('MyLib');
ATK4中的

看起来像这样:

$this->api->add('MyLib');

通常的做法是放置

$this->owner->mylib=$this;

在您的图书馆内,因此您可以更轻松地访问它们。

如果不了解PHP开发的发生方式,您可能会感觉更好,在大多数情况下,它非常依赖于HTML模板。