我对PHP非常陌生,并尝试使用php从服务器发送firebase推送通知。为此,我从另一个类调用了一个函数以从服务器中获取Firebase令牌并发送Firebase通知
<?php
class sendAdminpush {
private $db;
function __construct()
{
//importing required files
require_once 'DbOperationF.php';
require_once 'Firebase.php';
require_once 'push.php';
$db = new DbOperationF();
}
public function sendNotificationtoAdmin($title, $message,$usertype){
$notId = rand(10,1000);
$sound = "notification";
$image= "ic_waterlogo";
//creating a new push
$push = null;
$push = new Push(
$title,
$message,
$image,
$notId,
$sound
);
//getting the push from push object
$mPushNotification = $push->getPush();
//getting the token from database object
$devicetoken = $db->getAllTokens($usertype);
//creating firebase class object
$firebase = new Firebase();
//echo "tok:".$devicetoken."and p".$mPushNotification;
//sending push notification and displaying result
echo $firebase->send($devicetoken, $mPushNotification);
}
}
//class end
?>
我从另一个班级叫sendAdminpush但它给出一个错误,例如
PHP Fatal error: Uncaught Error: Call to a member function getAllTokens() on null in /home/ihdi/public_html/tupo.in/tupo/includes/Firebase/sendAdminpush.php:36
和我的DbOperationF类
<?php
class DbOperationF
{
//Database connection link
private $conn;
//Class constructor
function __construct()
{
// //Getting the DbConnect.php file
require_once dirname(__FILE__) . '/../DbConnect.php';
//require_once '../DbConnect.php';
// //Creating a DbConnect object to connect to the database
$db = new DbConnect();
// //Initializing our connection link of this class
// //by calling the method connect of DbConnect class
$this->conn = $db->connect();
}
//getting all tokens to send push to all devices
public function getAllTokens($usertype){
echo "ui:".$token;
$stmt = $this->conn->prepare("SELECT token from fcm_token WHERE user_type=?");
$stmt->bind_param("s", $usertype);
$stmt->execute();
//$stmt->bind_result($token);
$result = $stmt->get_result();
$tokens = array();
while($token = $result->fetch_assoc()){
array_push($tokens, $token['token']);
}
return $tokens;
}
}
}
}
[帮助我解决此错误,对不起我的英语不好。
您未使用已创建的$db
实例,而是试图访问附带功能的$db
。要解决此问题,您需要使用$this->db
访问全局$db
。一个例子:
<?php
class sendAdminpush
{
private $db;
function __construct()
{
//importing required files
require_once 'DbOperationF.php';
require_once 'Firebase.php';
require_once 'push.php';
$this->db = new DbOperationF();
}
public function sendNotificationtoAdmin($title, $message, $usertype)
{
$notId = rand(10, 1000);
$sound = "notification";
$image = "ic_waterlogo";
//creating a new push
$push = null;
$push = new Push($title, $message, $image, $notId, $sound);
//getting the push from push object
$mPushNotification = $push->getPush();
//getting the token from database object
$devicetoken = $this->db->getAllTokens($usertype);
//creating firebase class object
$firebase = new Firebase();
//echo "tok:".$devicetoken."and p".$mPushNotification;
//sending push notification and displaying result
echo $firebase->send($devicetoken, $mPushNotification);
}
}
//class end
?>
我认为您需要在]进行更改>
$db = new DbOperationF();
将成为]
$this->db = new DbOperationF();
它是该类的ans全局变量,需要使用$ this为其分配任何值