Im недавно перешел от процедурного к oop с моим php, я изучаю книгу, а также выполняя упражнения и проекты в книге, я также даю себе реальный проект сделайте для моего собственного сайта.Инициализировать класс и иметь проблемы с неопределенным смещением
Я хочу реализовать функцию sms на своем веб-сайте, и, исследуя проект, натолкнулся на эту небольшую библиотеку классов, которая подключается к API компании, которую я буду использовать, библиотека находится на github и, кажется, неподдерживается, и мой электронные письма разработчику отскакивают назад.
Это library и это код, я использую, чтобы инициализировать его:
require_once('classes/class.smsquick.php');
$username = "someuser";
$password = "somepass";
$api = new SmsQuick($username, $password);
//uncommenting the line below returns undefined_index @ line 312 and 282
//$available_credits = $api->checkBalance();
//var_dump($api); //used for checking
Эти ошибки я получаю:
Примечание: Не определено смещение: 1 в C: \ сайты \ ooptuts \ public \ classes \ class.smsquick.php on line 312
Предупреждение: array_values () ожидает, что параметр 1 будет массивом, логическим значением которого является C: \ websites \ ooptuts \ public \ classes \ class.smsquick. php в строке 282
линия 312 и 282 указываются в следующих два методах, последние два метода необходимы, чтобы я показал те же:
public function checkBalance() {
$vars = array(
'username' => $this->api_username,
'password' => $this->api_password,
'action' => 'balance',
);
$retval = $this->executeApiRequest($vars);
list(, $response) = array_values(reset($retval)); // line 282
return (int) $response;
}
/**
* Helper method to execute an API request.
*
* @param array $vars
* Data to POST to SMS gateway API endpoint.
*
* @return array
* Response from SMS gateway.
*/
public function executeApiRequest($vars) {
// Basic validation on the authentication details
foreach ($vars as $key => $value) {
switch ($key) {
case 'username':
case 'password':
if (empty($value)) {
throw new Exception('API username or password not specified.');
}
break;
}
}
$data = $this->preparePostData($vars);
$retval = $this->executePostRequest($data);
list($status, $response) = explode(':', $retval); // line 312
if ($status == 'ERROR') {
throw new Exception(strtr('There was an error with this request: !error.', array('!error' => $response)));
}
$data = array();
$lines = explode("\n", $retval);
foreach (array_filter($lines) as $i => $line) {
$line = trim($line);
$data[$i] = explode(':', $line);
}
return $data;
}
protected function preparePostData($data) {
$post_data = array();
foreach ($data as $key => $value) {
switch ($key) {
case 'to':
// Support multiple phone numbers.
$value = implode(',', array_unique($value));
break;
}
$post_data[] = $key . '=' . rawurlencode($value);
}
return implode('&', $post_data);
}
protected function executePostRequest($data) {
$ch = curl_init($this->api_endpoint);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$retval = curl_exec($ch);
curl_close($ch);
return $retval;
}
ли проблемы, вызванные, как я инициализация класса или что-то, что я упускаю из виду? .. Кажется, я провел два дня в кругах с Google и т. д., и не добился значительного прогресса, и был бы признателен за некоторые советы от других.
благодаря
Вы, конечно, были на правильном пути, мне не пришлось менять линию сброса, проблема была с сертификатом ssl, я переустановил Wamp на прошлой неделе и глупо забыл включить cacert.pem в мою папку Wamp, которая явно возвращалась плохие данные через завиток. Большое спасибо. Отмечено, как ответили. – MartinJJ
Рад, что я мог помочь. Честно говоря, я прочитал проблему в обратном порядке. Я должен был предположить, что вызов CURL будет рассмотрен первым, но так, как я прочитал вопрос, у меня было это назад. Тем не менее, я бы сохранил вызов сброса в своей строке, если значение $ retval в конечном итоге пуст. Вы также можете поместить некоторые ошибки при необходимости – Matt1776