2017-01-05 1 views
1

J'ai donc des problèmes pour travailler avec Pusher sur le serveur wamp en utilisant CodeIgniter. Le côté client fonctionne bien, mais PHP ne gère pas les événements. PHP authentifie les canaux, mais ne déclenche pas d'événements. Si j'utilise Pusher, les créateurs d'événements obtiennent des événements.Comment se connecter Le déclencheur d'événement PHP Pusher échoue-t-il dans CodeIgniter?

Voici le code:

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 retour FAUX. Je voudrais mieux comprendre le problème, mais je suis bloqué sur la façon de déboguer. A partir de Pusher PHP docs

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

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

Mais si j'utilise ce code, j'obtiens des erreurs CI. J'ai essayé d'utiliser myLogger dans ma bibliothèque Pusher comme ceci:

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);   
    } 

mais eu erreur:

Class declarations may not be nested 
+0

Vous ne pouvez pas déclarer une classe à l'intérieur d'une classe. – yivi

Répondre

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

Ceci est du code invalide, vous ne pouvez pas déclarer une classe dans une fonction ou une autre classe.

Il doit être déclaré portée Gobal ou espace de noms:

// 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); 
    } 
}