send_notification関数をGCM
含むクラスがあります。別のクラスでDemand.php
、send_notification関数を使用しようとしています。したがって、次のようにクラスDemand.php
を指すコンストラクターがあります。GCM
$gcm = new GCM();
この$gcm
変数は、次のようなクラス内の関数で使用されます。
$result = $gcm->send_notification($registatoin_ids, $message);
ここでエラーが発生します。
<br />n<b>Fatal error</b>: Call to a member function send_notification() on a non-object in..
問題を検索したところ、問題$gcm
はnullであることがわかりました。そのため、何も呼び出されていません。だから私が置くとき
$gcm = new GCM();
私の関数内では正しく機能しました。しかし、これを行う他の方法はありませんか?つまり、 ?$gcm
のコンストラクターにcreateingを入れるだけでは大丈夫ではないということです。Demand.php
これが私が言及している部分です:
function __construct() {
require_once 'GCM.php';
require_once 'DB_Connect.php';
require_once 'DB_Functions.php';
// connecting to database
$this->db = new DB_Connect();
$this->db->connect();
$gcm = new GCM();
$df = new DB_Functions();
}
// destructor
function __destruct() {
}
public function getDistance($uuid, $name, $distance, $latstart, $lonstart, $latend, $lonend, $gcm_regId) {
$user_new = array ("$uuid", "$name", "$distance","$latstart", "$lonstart", "$latend", "$lonend","$gcm_regId");
$query = sprintf("SELECT uid, distance,latstart, lonstart, latend, lonend, gcm_regid, name FROM user_demand WHERE latstart='%s' AND lonstart='%s'",
mysql_real_escape_string($latstart),
mysql_real_escape_string($lonstart));
$user = mysql_query($query);
$no_of_rows = mysql_num_rows($user);
while($user_old = mysql_fetch_assoc($user))
{
$djson = $this->findDistance($latend,$lonend,$user_old["latend"],$user_old["lonend"] );
if ($user_old["distance"]+$distance>=$djson) {
$match = mysql_query("INSERT INTO matched_users(gcm_a, gcm_b, name_a, name_b) VALUES(".$user_old['gcm_regid'].",".$user_new['gcm_regId'].",".$user_old['name'].",".$user_new['name'].")");
$registatoin_ids = array($gcm_regId);
$message = array("var" => $name);
$result = $gcm->send_notification($registatoin_ids, $message);
}
}
}