【问题标题】:What is the best way to integrate a CakePHP app with a third party API framework?将 CakePHP 应用程序与第三方 API 框架集成的最佳方式是什么?
【发布时间】:2013-01-02 23:03:28
【问题描述】:

在同一台服务器上,我有一个Restler 3.0 API 服务器和一个CakePHP 2.3 应用程序,我希望能够使用Restler 应用程序中的CakePHP 控制器功能。当然我不想让 CakePHP 做任何渲染,只是为了处理数据。

我考虑只从 Restler api 向 CakePHP 应用程序发出 https 请求,但这对于 Restler 服务器的客户端来说似乎效率很低。我也考虑过使用 RabbitMQ 在应用程序之间进行 RPC,但 PHP 中的 RPC 对于我试图保持简单的事情来说似乎太复杂了。

理想情况下,在 Restler 中,我可能会有这样的东西:

<?php
class Content {
    function post() {
        // CakePHP stuff:
        $data = array('title'=>'fake data');
        $this->Content->create();
        if ($this->Content->save($data)) {
            return 'ok';
        }
    }
}

对于实现这种集成的最佳方式,我完全愿意接受任何好的想法。

【问题讨论】:

  • Cake 不是为用作库而设计的。它是一个全栈框架。通常你在 cake 中使用其他库,而不是反过来。
  • 这是有道理的,那么集成两个框架的最佳方法是什么 - 消息队列是正确的方法吗?

标签: php cakephp cakephp-2.0 restler


【解决方案1】:

这是否可能真的取决于您环境的性质。

注意事项:

  1. 您的控制器是否使用其他蛋糕框架组件(控制器、模型、组件等)?如果是这种情况,您可能会感到震惊,因为蛋糕是面向约定的。如果没有蛋糕管道来解释这些约定,它们就毫无意义。

如果您只需要重新利用一些非蛋糕特定的 PHP 逻辑,您总是可以将其重构为自己的 php 类,甚至只是一个包含一些函数的 .php 文件,并在您的 Restler 应用程序和您的 Cake 应用程序之间共享它们。

【讨论】:

  • 是的,它是一个相当复杂的应用程序,所以不幸的是它使用了几乎所有的蛋糕组件。我尝试将 Cake 与自定义 app\webroot\index.php 文件一起使用,删除调度程序,并直接调用控制器方法 - 虽然这从 test.php 文件工作,但试图从我遇到的 Restler 类中执行它大量范围问题。
  • 这就是问题所在。拥有一个集中式调度程序可以让 cake 装饰执行上下文并赋予诸如 $uses 约定之类的含义。它不像仅仅重新利用控制器的行为那么简单。您是否考虑过将 Cake 应用程序的行为暴露为 Restful URI 本身?消费者将不知道他们的请求被定向到哪个服务器。这可能是一个很好的权宜之计。
猜你喜欢
  • 2018-12-10
  • 2012-02-09
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 2012-11-29
  • 2012-10-21
  • 2011-11-22
  • 2015-01-27
相关资源
最近更新 更多