<?php
namespace Telnyx\ApiOperations;
/**
* Trait for listable resources. Adds a `all()` static method to the class.
*
* This trait should only be applied to classes that derive from TelnyxObject.
*/
trait All
{
/**
* @param array|null $params
* @param array|string|null $opts
*
* @return \Telnyx\Collection of ApiResources
*/
public static function all($params = null, $opts = null)
{
self::_validateParams($params);
// Convert filter[] pararms
if (is_array($params)) {
foreach ($params as $name => $val) {
// Make sure this isn't a page[] param
if (strpos($name, '[') === false && strpos($name, ']') === false) {
// Enclose param in filter[] and remove old param
$params['filter[' . $name . ']'] = $val;
unset($params[$name]);
}
}
}
$url = static::classUrl();
list($response, $opts) = static::_staticRequest('get', $url, $params, $opts);
// Convert this response to a list or collection object
$response->json['record_type'] = 'list';
$obj = \Telnyx\Util\Util::convertToTelnyxObject($response->json, $opts);
if (!is_a($obj, 'Telnyx\\Collection')) {
$class = get_class($obj);
$message = "Expected type \"Telnyx\\Collection\", got \"$class\" instead";
throw new \Telnyx\Error\Api($message);
}
$obj->setLastResponse($response);
$obj->setRequestParams($params);
// This was a temporary field for convertToTelnyxObject. Remove it.
unset($obj['record_type']);
return $obj;
}
}