PHP

SoftLayer proporciona un cliente de API basado en PHP que agiliza la realización de llamadas SOAP o XML-RPC manuales. Para utilizar el cliente de API basado en PHP, deben cumplirse los siguientes requisitos del sistema:

  • PHP 5.2.3 o superior
  • Una de las siguientes extensiones de PHP:

Descargue el cliente de API PHP de SoftLayer de su página de proyecto en el perfil github de SoftLayer. Una vez descargado, extraiga el cliente de API PHP en un directorio local para el proyecto PHP o en la vía de acceso include_path de su instalación de PHP.
Descargue el cliente PHP de API de SoftLayer

Realización de llamadas SOAP

Una vez descargado e instalado el cliente de API, lo primero que hay que hacer es incluir el archivo SoapClient.class.php en el script. Este archivo define los objetos de cliente de SoftLayer.

require_once('/path/to/SoftLayer/SoapClient.class.php');

A continuación, cree un objeto de cliente para el servicio de API de SoftLayer que desee utilizar. SoftLayer_SoapClient::getClient() lo hace automáticamente utilizando cuatro parámetros:

  • El nombre del servicio que desea invocar.
  • Un número de ID opcional del objeto específico con el que desea trabajar. Pase un valor null si está trabajando con el servicio SoftLayer_Account o si no está trabajando con un servidor, una incidencia de soporte técnico, una factura u otro objeto específico. Este ID crea un parámetro de inicialización en la llamada de API.
  • El nombre de usuario de API.
  • La clave de API.

El siguiente fragmento de código proporciona un ejemplo de cómo realizar una llamada SOAP utilizando los parámetros anteriores:

require_once('/path/to/SoftLayer/SoapClient.class.php');
 
$apiUsername = 'set me';
$apiKey = 'set me';
 
/**
 * Create a client to the SoftLayer_Account API service.
 */
$client = SoftLayer_SoapClient::getClient('SoftLayer_Account', null, $apiUsername, $apiKey);
 
/**
 * Work directly with the SoftLayer_Hardware_Server record with the hardware id 
 * 1234.
 */
$serverId = 1234;
$client = SoftLayer_SoapClient::getClient('SoftLayer_Hardware_Server', $serverId, $apiUsername, $apiKey);

Cuando el objeto del cliente de API esté preparado, invoque un método de API de SoftLayer como si fuera local para su objeto de cliente. Asigne el resultado de la llamada de API a una variable para obtener el resultado de la llamada. Los objetos de tipo complejo se devuelven como objetos stdClass de PHP. De la misma manera, utilice objetos stdClass si necesita pasar parámetros de tipo complejo a las llamadas de API. Por ejemplo:

require_once('/path/to/SoftLayer/SoapClient.class.php');
 
$apiUsername = 'set me';
$apiKey = 'set me';
$domainId = 1234;
 
$client = SoftLayer_SoapClient::getClient('SoftLayer_Dns_Domain', $domainId, $apiUsername, $apiKey);
 
/**
 * Create a new A record in a domain.
 */
$newRecord = $client->createARecord('myhost', '127.0.0.1', 86400);
 
echo 'New A record id: ' . $newRecord->id;
 
/**
 * Create a new domain record. 
 * 
 * This requires an API client with a null id, and use a stdClass object to model 
 *our new domain.
 */
$client = SoftLayer_SoapClient::getClient('SoftLayer_Dns_Domain', null, $apiUsername, $apiKey);
 
$domain = new stdClass();
$domain->name = 'example.org';
$domain->resourceRecords = array();
$domain->resourceRecords[0] = new stdClass();
$domain->resourceRecords[0]->host = '@';
$domain->resourceRecords[0]->data = '127.0.0.1';
$domain->resourceRecords[0]->type = 'a';
 
$newDomain = $client->createObject($domain);
 
echo 'New domain id: ' . $newDomain->id;

Utilización de XML-RPC

El cliente PHP de API de SoftLayer da soporte a los protocolos SOAP y XML-RPC de manera intercambiable. Si desea utilizar XML-RPC en lugar de SOAP, se requieren dos cambios:

  • Incluir XmlrpcClient.class.php en lugar de SoapClient.class.php
  • Crear un cliente de API con SoftLayer_XmlrpcClient::getClient() en lugar de con SoftLayer_SoapClient::getClient()
    Por ejemplo:
require_once('/path/to/SoftLayer/XmlrpcClient.class.php');
 
$apiUsername = 'set me';
$apiKey = 'set me';
 
$client = SoftLayer_XmlrpcClient::getClient('SoftLayer_Account' null, $apiUsername, $apiKey);

Utilización de máscaras de objeto

Cree una máscara de objeto en la llamada de API declarando primero un nuevo objeto SoftLayer_ObjectMask. Defina las propiedades relacionales que desee recuperar como propiedades locales en el nuevo objeto de máscara. Por último, enlácelo al cliente de API utilizando el método setObjectMask(). En este ejemplo se recupera la siguiente información:

  • El hardware físico de la cuenta
  • El registro del sistema operativo del hardware
  • La contraseña del sistema operativo
  • Los componentes de red
  • El centro de datos donde se encuentra el hardware
  • El número de procesadores en cada hardware
require_once('/path/to/SoftLayer/SoapClient.class.php');
 
$apiUsername = 'set me';
$apiKey = 'set me';
 
$client = SoftLayer_SoapClient::getClient('SoftLayer_Account', null, $apiUsername, $apiKey);
 
/**
 * Retrieve items related to hardware.
 *
 * Operating system, operating system passwords, all network components, the
 * datacenter the server is located in, and the number of processors in each 
 * server.
 */
$objectMask = new SoftLayer_ObjectMask();
$objectMask->hardware->operatingSystem->passwords;
$objectMask->hardware->networkComponents;
$objectMask->hardware->datacenter;
$objectMask->hardware->processorCount;
$client->setObjectMask($objectMask);
 
$hardware = $client->getHardware();

Utilización de los límites de resultados

Cuando se invocan datos, especialmente en las consultas que implican la extracción de fragmentos de código de información de grupos de gran tamaño, el uso de límites de resultados disminuye significativamente el tiempo de espera de la devolución.
Limite el número de resultados en la llamada de API con el método setResultLimit() del objeto de cliente. Este método utiliza dos parámetros:

  • El número de resultados al que se limita la llamada.
  • Un desplazamiento opcional para iniciar el conjunto de resultados.
    El ejemplo siguiente incorpora la información necesaria para establecer un límite de resultados:
require_once('/path/to/SoftLayer/SoapClient.class.php');
 
$apiUsername = 'set me';
$apiKey = 'set me';
 
$client = SoftLayer_SoapClient::getClient('SoftLayer_Account', null, $apiUsername, $apiKey);
 
/**
 * Retrieve our first two open support tickets.
 */
$client->setResultLimit(2);
 
$tickets = $client->getOpenTickets();

Manejo de errores

El cliente PHP genera los errores de llamada de API de SoftLayer como excepciones. Realice llamadas a la API de SoftLayer dentro de bloques try/catch para garantizar un manejo correcto. Utilice el método getMessage() de las clases de excepción de PHP para acceder a los errores devueltos por la API de SoftLayer. El siguiente script contiene un ejemplo de este tipo de error:

require_once('/path/to/SoftLayer/SoapClient.class.php');
 
$apiUsername = 'set me!';
$apiKey = 'an incorrect API key';
 
$client = new SoftLayer_SoapClient('SoftLayer_Account', null, $apiUsername, $apiKey);
 
/**
 * Exit the script with the message:
 * "Unable to retrieve account information: Invalid API key"
 */
try {
    $account = $client->getObject();
} catch (Exception $e) {
    die('Unable to retrieve account information: ' . $e->getMessage());
}

Componentes de API referenciados

Servicios

Tipos de datos

Métodos