namespaces - Cakephp 3 : React/zmq library namespace

标签 namespaces cakephp-3.0 zeromq ratchet reactphp

我正在研究使用这里提到的 Ratchet 的基本教程http://socketo.me/docs/push .

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

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

此代码基本上将新数据提交到 ZMQ 队列以转发到 Ratchet 。如果我将相同的 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 文件中可用,那么它也应该通过\ZMQContext 在 CakePHP 3 中可用。

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

    这是一个简单的拼写问题:

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

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

    关于namespaces - Cakephp 3 : React/zmq library namespace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41054517/

    相关文章:

    php 命名空间和自动加载

    c++ - using 指令如何以及在何处注入(inject)成员名称?

    java - 如何轻松地将 XML 命名空间转换为 Java 包名称?

    Oracle:函数的全局命名空间限定符?

    php - 获取 Cakephp 3 显示 bool 值的真/假

    php - 在 CakePHP 3 中将自定义 SQL 代码放在哪里?

    c++ - 为什么 ZeroMQ 不使用其内部线程等待(接收/发送)?

    python - Python 中的 ZMQ : New socket object for each incoming connection

    hash - 如何手动在 cakephp 3 中进行密码散列?

    go - 无法在 mac os X 上为 golang 运行 zmq,未知问题