Codeigniter 3 作曲家和供应商目录

Codeigniter 3 composer and vendor directory

我已经安装了 codeigniter 3.1.8 并使用 composer 安装了这个库https://github.com/php-amqplib/php-amqplib

composer require php-amqplib/php-amqplib

这已经创建了目录 vendor

我在此处查看了关于如何使用该库的公认答案How to use composer packages in codeigniter?

但这是我在供应商中的目录结构。

和内部 php-amqplib

和内部 php-amqplib

如果我查看 index.php,我发现 fcpath 已经被定义

// Path to the front controller (this file) directory
define('FCPATH', dirname(__FILE__).DIRECTORY_SEPARATOR);

require_once BASEPATH.'core/CodeIgniter.php';

并再次定义它会导致 error.How 我可以在我的控制器方法中使用 php-amqplib 吗?

如果您的问题是 - 我怎样才能在我的控制器方法中使用 php-amqplib?

步骤1 :

在一开始就允许或要求 autoload.php 文件,但在 codeigniter 上,您不能在 general.So 中更改配置文件中的一行,该行将自动要求 autoload.php 文件。

CodeIgniter/application/config/config.php 找到:

$config['composer_autoload'] = FALSE;$config['composer_autoload'] = TRUE;

第2步 :

在你的控制器上 class 像这样:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;

class Welcome extends CI_Controller {
   public function index()
   {
        // your business logic like this
        $msg = new AMQPMessage($msg_body);
        $ch->batch_basic_publish($msg, $exchange);
   }
}
第 3 步:

现在可以通过URL

调用
http://example.com/Welcome

现在更多ref:PhpAmqpLib

这将打开和关闭连接

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

use PhpAmqpLib\Message\AMQPMessage;
use PhpAmqpLib\Connection\AMQPStreamConnection; 

class Welcome extends CI_Controller {

    public function index()
    {
        $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
        $channel = $connection->channel();
        $channel->queue_declare('hello', false, false, false, false);

        $msg = new AMQPMessage('Yur message goes here....');
        $channel->basic_publish($msg, '', 'hello');

        $channel->close();
        $connection->close();

        $this->load->view('welcome_message');
    }
}

更改 /application/config/config.php 中的 composer_autoload 配置,如下所示 $config['composer_autoload'] = 'vendor/autoload.php';