【发布时间】:2020-02-07 13:35:35
【问题描述】:
没有类,只是简单的代码,我的方法正在工作并获得“SUCCESS” response_status,但是当我把它放在一个类中时,我什么也得不到。
所有代码:
class THBS_API
{
private const call_url = "https://xxxxxxxxxxxx.xxx/endsoftware.php";
private $base_url;
private $fields;
private $fields_string;
public static function getUsers()
{
$base_url = $_SERVER['SERVER_NAME'];
$fields_string = '';
$fields = array(
'API_USER' => urlencode('xxxxxx@xxxxxx.xxx'),
'API_PASS' => urlencode('xxxxxxxxx'),
'CMD' => urlencode('getUserCount'),
'FROM' => urlencode($base_url));
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $call_url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
$response = json_decode($result, true);
return $response['response_status'];
}
}
echo THBS_API::getUsers();
很奇怪,但我认为是因为在类中声明变量不同,是我使用privar $base_url 的问题吗?以及如何解决这个问题?
P.S:这是我上过的第一堂课,我用普通函数做得很好,但我还是想学习类函数
现在我明白了
注意:未定义变量:第 24 行 /srv/disk1/3203065/www/xxxxxxxxxxxxxxxxxx.com/API/clientapi.php 中的 fields_string
第 44 行:
return $response['response_status'];
没有类的代码(工作):
$base_url = $_SERVER['SERVER_NAME'];
$url = "https://xxxxxxxxxxx.com/API/endsoftware.php";
$fields = array(
'API_USER' => urlencode('xxxxxx@xxxxx.xxxx'),
'API_PASS' => urlencode('xxxxxxxxxx'),
'CMD' => urlencode('getUserCount'));
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
$response = json_decode($result, true);
echo $response['response_status'];
(返回“成功”)
【问题讨论】:
-
您的代码在哪里定义了
$call_url?也许那是一些全局变量(因此它可以在没有类的情况下工作)? -
这是一个错误,我将 $url 更改为 $call_url 但相同。 (立即编辑线程)
-
把
$call_url改成$this->call_url看看。 -
另外,由于
call_url似乎没有变化,您可以将其声明为常量。 -
在你的 getUsers 函数中定义 $field_string 变量,如
$field_string = ''然后开始连接它。