2017-01-05 2 views
1

Так что у меня проблемы с работой Pusher на сервере Wamp с помощью CodeIgniter. Клиентская сторона работает отлично, но PHP не вызывает события тригера. PHP выполняет аутентификацию каналов, но не вызывает события. Если я использую клиент-создатель событий Pusher, вы получите события.Как регистрировать триггер событий Pusher PHP в CodeIgniter?

Вот код:

function send_event($channel, $event, $message, $socket_id = NULL){ 
    $channel_array = array(); 
    array_push($channel_array, $channel); 
    $data['message'] = $message; 
    if(is_null($socket_id)){ 
     $response = $this->pusher->trigger($channel_array, $event, $data); 
    }else{ 
     $response = $this->pusher->trigger($channel_array, $event, $data, $socket_id); 
    } 
    var_dump($response);   
} 

var_dump возвращают FALSE. Я хотел бы понять проблему больше, но я зациклился на том, как отлаживать. От толкателя PHP docs

class MyLogger { 
    public function log($msg) { 
    print_r($msg . "\n"); 
    } 
} 

$pusher->set_logger(new MyLogger()); 

Но если я использую этот код, я получаю ошибки CI. Я пытался использовать myLogger в моей библиотеке толкателя, как это:

function __construct() 
    { 
     class MyLogger { 
      public function log($msg) { 
      print_r($msg . "\n"); 
      } 
     } 

     $this->CI =& get_instance(); 
     $this->CI->load->library('tank_auth'); 

     require_once('Pusher.php'); 

     $this->options['encrypted'] = true; 
     $this->pusher = new Pusher(
      $this->key, 
      $this->secret, 
      $this->app_id, 
      $this->options 
     ); 
     $logger= new MyLogger; 
     $this->pusher->set_logger($logger); 
    } 

    function send_event($channel, $event, $message, $socket_id = NULL){ 
     $channel_array = array(); 
     array_push($channel_array, $channel); 
     $data['message'] = $message; 
     if(is_null($socket_id)){ 
      $response = $this->pusher->trigger($channel_array, $event, $data); 
     }else{ 
      $response = $this->pusher->trigger($channel_array, $event, $data, $socket_id); 
     } 
     var_dump($response);   
    } 

но получил ошибку:

Class declarations may not be nested 
+0

Вы не можете объявить класс внутри класса. – yivi

ответ

0
function __construct() 
{ 
    class MyLogger { 
     public function log($msg) { 
     print_r($msg . "\n"); 
     } 
    } 
} 

Это неверный код, вы не можете объявить класс внутри функции или другого класса.

Он должен быть объявлен в Gobal области или пространства имен:

// declare first class 
class MyLogger { 
    public function log($msg) { 
     print_r($msg . "\n"); 
    } 
} 

// now you can instantiate the class inside you second class 
class PusherOrWhatever { 
    public function __construct() { 
     $this->pusher->set_logger(new MyLogger); 
    } 
} 
Смежные вопросы