Tôi có API này yêu cầu tôi phải có một mã mảng cụ thể để gửi. Vì mảng đó cần phải được sử dụng trên tất cả các phương thức lớp, tôi đã nghĩ đến việc đặt làm thuộc tính lớp.Mảng là thuộc tính lớp học?
abstract class something {
protected $_conexion;
protected $_myArray = array();
}
Sau đó, về các phương pháp của lớp này, tôi sẽ sử dụng:
$this->_myArray["action"] = "somestring";
(Trong trường hợp "hành động" là chìa khóa mà cần phải được gửi đến API này);
Điều này có được không? Tôi đã không nhìn thấy đủ OOP trước mắt tôi đó là lý do tại sao tôi hỏi điều này.
Theo yêu cầu, đây là thông tin thêm về API:
class Apiconnect {
const URL = 'https://someurl.com/api.php';
const USERNAME = 'user';
const PASSWORD = 'pass';
/**
*
* @param <array> $postFields
* @return SimpleXMLElement
* @desc this connects but also sends and retrieves the information returned in XML
*/
public function Apiconnect($postFields)
{
$postFields["username"] = self::USERNAME;
$postFields["password"] = md5(self::PASSWORD);
$postFields["responsetype"] = 'xml';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, self::URL);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
$data = curl_exec($ch);
curl_close($ch);
$data = utf8_encode($data);
$xml = new SimpleXMLElement($data);
if($xml->result == "success")
{
return $xml;
}
else
{
return $xml->message;
}
}
}
abstract class ApiSomething
{
protected $_connection;
protected $_postFields = array();
/**
* @desc - Composition.
*/
public function __construct()
{
require_once("apiconnect.php");
$this->_connection = new Apiconnect($this->_postFields);
}
public function getPaymentMethods()
{
//this is the necessary field that needs to be send. Containing the action that the API should perform.
$this->_postFields["action"] = "dosomething";
//not sure what to code here;
if($apiReply->result == "success")
{
//works the returned XML
foreach ($apiReply->paymentmethods->paymentmethod as $method)
{
$method['module'][] = $method->module;
$method['nome'][] = $method->displayname;
}
return $method;
}
}
}
Thanks a lot, MEM
Vâng, tôi không biết chính xác lý do tại sao bạn cần khóa mảng này tồn tại nhưng chắc chắn, trông hoàn toàn ổn với tôi – Hannes
Không có đủ thông tin để nói rằng thuộc tính '$ _myArray' là điều đúng đắn cần làm. Dữ liệu được lưu trữ trong nó có cần phải tồn tại trên phương thức 'something' gọi không? Hãy cho chúng tôi biết thêm về API bạn đang sử dụng. – outis
@outis - Không chắc chắn về phần còn lại. Thuộc tính đó được sử dụng trên tất cả các phương thức, nhưng các giá trị của thuộc tính đó, cho đến bây giờ ít nhất, dường như không truyền (cùng giá trị đó) từ phương thức này sang phương thức khác. (Đây là những gì bạn yêu cầu?) – MEM