Tengo esta API que requiere que tenga una clave de matriz específica para enviar. Como esa matriz debe usarse en TODOS los métodos de clase, estaba pensando en ponerla como propiedad de clase.¿Matriz como propiedad de la clase?
abstract class something {
protected $_conexion;
protected $_myArray = array();
}
Más adelante, en los métodos de esta clase, voy a utilizar a continuación:
$this->_myArray["action"] = "somestring";
(Donde "acción" es la clave que hay que enviar a este API);
¿Esto está bien? No he visto suficiente OOP delante de mis ojos, es por eso que estoy preguntando esto.
a lo solicitado, es aquí más información sobre el 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;
}
}
}
Muchas gracias, MEM
Bueno, no sé exactamente por qué necesita esta clave de matriz para existir, pero seguro, se ve perfectamente bien para mí – Hannes
No hay suficiente información para decir si la propiedad '$ _myArray' es lo correcto. ¿Los datos almacenados en él deben persistir a través de llamadas al método 'something'? Cuéntanos más sobre la API que estás usando. – outis
@outis - No estoy seguro acerca de la parte persistente. Esa propiedad se usa en todos los métodos, pero los valores de esa propiedad, hasta ahora al menos, no parecen pasar (el mismo valor) de un método a otro. (¿era esto lo que preguntas?) – MEM