2012-04-26 35 views
0

これは簡単な質問です。別のクラスの関数を呼び出そうとしていますが、それは動作しません。ありがとうございます。別のクラスの関数を呼び出すことはできません

** main.php ** 
require_once("../push/push.php"); 
new APNS_Push($config); 
start(); 


** push.php ** 

class APNS_Push 
{ 
private $fp = NULL; 
private $server; 
private $certificate; 
private $passphrase; 

function __construct($config) 
{ 
    $this->server = $config['server']; 
    $this->certificate = $config['certificate']; 
    $this->passphrase = $config['passphrase']; 

    // Create a connection to the database. 
    $this->pdo = new PDO(
     'mysql:host=' . $config['db']['host'] . ';dbname=' . $config['db']['dbname'], 
     $config['db']['username'], 
     $config['db']['password'], 
     array()); 


    // If there is an error executing database queries, we want PDO to 
    // throw an exception. 
    $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    // We want the database to handle all strings as UTF-8. 
    $this->pdo->query('SET NAMES utf8'); 
} 

// This is the main loop for this script. It polls the database for new 
// messages, sends them to APNS, sleeps for a few seconds, and repeats this 
// forever (or until a fatal error occurs and the script exits). 
function start() 
{ 
    //writeToLog('Connecting to ' . $this->server); 

    if (!$this->connectToAPNS()) 
     exit; 


     // Do at most 20 messages at a time. Note: we send each message in 
     // a separate packet to APNS. It would be more efficient if we 
     // combined several messages into one packet, but this script isn't 
     // smart enough to do that. ;-) 

     $stmt = $this->pdo->prepare('SELECT * FROM push_queue WHERE time_sent IS NULL LIMIT 25'); 
     $stmt->execute(); 
     $messages = $stmt->fetchAll(PDO::FETCH_OBJ); 

     $deletedIds = array(); 

     foreach ($messages as $message) 
     { 
      echo 's'; 
      if ($this->sendNotification($message->message_id, $message->device_token, $message->payload)) 
      { 
       //$stmt = $this->pdo->prepare('UPDATE push_queue SET time_sent = NOW() WHERE message_id = ?'); 

       $name = $message->name; 
       echo $name; 
       $value = '1'; 
       //$this->pdo->query('UPDATE users SET needsUpdate = '$value' WHERE username='$name''); 

       //$stmt->execute(array($message->message_id)); 

       $deletedIds[] = $message->message_id; 

       //$stmt = $this->pdo->prepare('DELETE FROM push_queue WHERE message_id = ?'); 
       //$stmt->execute(array($message->message_id)); 

      } 
      else // failed to deliver 
      { 
       $this->reconnectToAPNS(); 
      } 
     } 

     //Delete the chunk of messages. 
     $this->pdo->query('DELETE FROM push_queue WHERE message_id IN ('.implode(',', $deletedIds).')'); 


     //echo 'success'; 

     unset($messages);   

} 
+3

エラーが発生している機能を教えてください。 – Andy

+0

$ this-> pdoをクラスプロパティとして設定していません。プロパティの宣言に 'private $ pdo;'が必要です。 – Malovich

+1

この質問はもっと曖昧でしょうか?これはワルドのどこでもない。少なくとも私達にエラーメッセージを与えてください。 – webbiedave

答えて

2

私には、}がありません。私はクラスの最後にそれを加え、以下はうまくいった。

+0

右、クラスのスクリプト処理は、適切なインスタンス化も欠落していました。 – Malovich

+0

こんにちは、提案ありがとう、しかし、それdoens't仕事:( – BlackMouse

+0

私はより具体的に "動作しません" ... – GDP

関連する問題