2017-01-05 15 views
1

CodeIgniterを使用しているWampサーバーのPusherで問題が発生しました。クライアント側は正常に動作しますが、PHPはイベントをトリガーしません。 PHPはチャネルを認証しますが、イベントをトリガーしません。プッシャーを使用する場合、イベントクリエイタークライアントはイベントを取得します。ここでプッシャー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);   
} 

はFALSEを返すのvar_dump。私はこの問題をもっと理解したいと思っていますが、私はデバッグの仕方に固執しています。プッシャーからPHPドキュメント

しかし、このコードを使用すると、CIエラーが発生します。 、あなたが関数や他のクラス内のクラスを宣言カントに

Class declarations may not be nested 
+0

あなたはクラスのクラス内部を宣言することはできません。 – yivi

答えて

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

これは無効なコードです:私はこのように私のプッシャーライブラリに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);   
    } 

が、エラーが発生しました。

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); 
    } 
} 
関連する問題