1

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

  1. 我应该只创建一个到数据库的连接并在每个模型中都有粗略的内容,还是应该将它抽象到一个库中?
  2. 如果我将其抽象为模型,我将如何从模型内部调用方法?

一些注意事项:

  1. 在 .net 中,显而易见的答案是抽象它,我在我的项目中使用 mongo 和 asp.net mvc 完成了这一点,但在 php 方面我完全是菜鸟,所以我不确定约定是什么是。
  2. Code Igniter 使加载库变得非常容易,我想知道 ATK4 是否也是如此?
  3. 我已经阅读了您的所有文档并浏览了 beta 文档下的教程。

关于我的一些事情:我是 php 的菜鸟。我的主要编码框架是 .NET(vb&c#(winforms 和 asp(webforms 和 mvc)))

我一直在玩 CodeIgniter 并且非常喜欢它。我的一位同事让我查看 ATK4,我必须说我对迄今为止所看到的印象深刻。

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

4

1 回答 1

0

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

Mongo 感知视图

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

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

完成此操作后,您可以执行以下操作:

$form->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 个实例。敏捷工具包允许这样,并且控制器经常被这样使用。因此,您几乎负责 CI 中的数据管理,而在 ATK4 中,对象相互绑定。这是这些库中方法之间的核心区别。

CI中的图书馆:

$this->load->library('MyLib');

在 ATK4 中看起来像这样:

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

放置是常见的做法

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

在您的库中,因此您可以更轻松地访问它们。

不知道 PHP 开发是如何发生的可能会更好,它在大多数情况下非常依赖 HTML 模板。

于 2011-07-25T14:56:21.373 回答