【问题标题】:Cakephp 3: React/zmq library namespaceCakephp 3:React/zmq 库命名空间
【发布时间】:2016-12-09 06:42:12
【问题描述】:

我正在编写这里提到的使用棘轮的基本教程http://socketo.me/docs/push

我为教程创建了一个完美运行的测试设置。但是,当我尝试将设置与 CakePHP 3 集成时,我遇到了问题。就像教程中提到的那样,棘轮和 ZMQ 服务器是独立的。只有以下代码需要移入 CakePHP 3 控制器:

$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'my pusher');
$socket->connect("tcp://localhost:5555");
$socket->send(json_encode($entryData));

这段代码基本上是将新数据提交到 ZMQ 队列以转发到棘轮。如果我将相同的 4 行放在 CakePHP 3 代码库之外的普通 PHP 文件中,它就可以工作。当我在 APP\Controller\SamplesController 中放置相同的四行时,它会说找不到类 APP\Controller\ZMQContext。

CakePHP 3 文档提到通过 composer 安装的供应商库将通过自动加载器自动可用。我已经通过以下命令安装了 React\ZMQ 库:

php composer require react/zmq

我尝试通过以下命名空间访问该类,但没有一个有效:

ZMQContext ( Class 'App\Controller\ZMQContext' not found )
\ZMQContext ( Class 'App\Controller\ZMQ' not found )
React\ZMQ\ZMQContext ( Class 'App\Controller\React\ZMQ\ZMQContext' not found )
\React\ZMQ\ZMQContext ( Class 'React\ZMQ\ZMQContext' not found )

可能在 PHP 中遗漏了一些命名空间概念,但我的理解是,如果 ZMQContext 通过全局命名空间在普通 PHP 文件中可用,那么它也应该在 CakePHP 3 中通过 \ZMQContext 可用。

我有以下问题:

  1. 如何在我的 CakePHP 3 APP 中将数据推送到 ZMQ 队列?
  2. APP::path() & APP::classname() 似乎只适用于 CakePHP 3 应用程序中的类。如何检查特定供应商库类的路径?
  3. 如何正确自动加载供应商库类? (我不希望 require/require_once 它们,因为每个想要通过棘轮发布数据的控制器都需要这样做)
  4. 关于通过 \CLASSNAME 访问全局命名空间的假设是否错误?
  5. 我在 \ZMQContext 访问供应商库类的第二次尝试解析为 App\Controller\ZMQ。当它应该在根命名空间中尝试时,这怎么可能?
  6. ZMQContext 不是 react/zmq 库的一部分,这是否意味着它是 libzmq 的默认 php 绑定的一部分?

【问题讨论】:

  • 我发现 ZMQContext 是 0MQ 的 php 绑定 API 的一部分,因此可用于全局命名空间。请忽略第 6 个问题。
  • 它的工作..相同的四行..这很奇怪,我没有做任何更改只是重写了所有内容..现在所有问题都解决了..请忽略这个。跨度>

标签: namespaces cakephp-3.0 zeromq ratchet reactphp


【解决方案1】:

这是一个简单的错字问题:

$context = new \ZMQContext();
$socket = $context->getSocket(\ZMQ::SOCKET_PUSH, 'my pusher');
$socket->connect("tcp://localhost:5555");
$socket->send(json_encode($entryData));

缺少第二行中的第二个命名空间规范。

【讨论】:

    猜你喜欢
    • 2011-08-25
    • 2021-11-20
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 2011-03-05
    • 1970-01-01
    相关资源
    最近更新 更多