Codeigniter 3 каталог композиторов и поставщиков - PullRequest
0 голосов
/ 17 мая 2018

Я установил codeigniter 3.1.8 и установил эту библиотеку https://github.com/php-amqplib/php-amqplib, используя составитель:

composer require php-amqplib/php-amqplib

Это создало каталог поставщика enter image description here

Я посмотрел принятый ответ о том, как использовать библиотеку, здесь Как использовать пакеты composer в codeigniter?

но это моя структура каталогов в vendor.

enter image description here

секунда

и внутри php-amqplib

enter image description here

и внутри php-amqplib

enter image description here

Если я посмотрю на index.php, я обнаружу, что fcpath уже определен

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

require_once BASEPATH.'core/CodeIgniter.php';

и его повторное определение приведет к ошибке. Как я могу использовать php-amqplib внутри методов моего контроллера?.

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Это откроет и закроет соединение

<?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');
    }
}
0 голосов
/ 16 февраля 2019

Изменить конфигурацию composer_autoload в /application/config/config.php, как показано ниже $config['composer_autoload'] = 'vendor/autoload.php';

0 голосов
/ 17 мая 2018

ЕСЛИ ваш вопрос - Как я могу использовать php-amqplib внутри методов моего контроллера?

STEP - 1:

Разрешить или потребовать файл autoload.php в самом начале, но на codeigniter вы не можете это сделатьэто в общем. Так что измените одну строку в файле конфигурации, которая автоматически потребует autoload.php файл.

CodeIgniter/application/config/config.php find:

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

STEP - 2:

На вашем контроллере такого класса:

<?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);
   }
}
STEP - 3:

Теперь вы можете вызывать его по URL

http://example.com/Welcome

Теперь больше ref: PhpAmqpLib

...