2012-07-12 14:42:36 -04:00

86 lines
2.1 KiB
PHP
Executable File

<?php
/**
* Abstraction of a Twilio resource.
*
* @category Services
* @package Services_Twilio
* @author Neuman Vong <neuman@twilio.com>
* @license http://creativecommons.org/licenses/MIT/ MIT
* @link http://pear.php.net/package/Services_Twilio
*/
abstract class Services_Twilio_Resource
implements Services_Twilio_DataProxy
{
protected $name;
protected $proxy;
protected $subresources;
public function __construct(Services_Twilio_DataProxy $proxy)
{
$this->subresources = array();
$this->proxy = $proxy;
$this->name = get_class($this);
$this->init();
}
protected function init()
{
// Left empty for derived classes to implement
}
public function retrieveData($path, array $params = array())
{
return $this->proxy->retrieveData($path, $params);
}
public function deleteData($path, array $params = array())
{
return $this->proxy->deleteData($path, $params);
}
public function createData($path, array $params = array())
{
return $this->proxy->createData($path, $params);
}
public function getSubresources($name = null)
{
if (isset($name)) {
return isset($this->subresources[$name])
? $this->subresources[$name]
: null;
}
return $this->subresources;
}
public function addSubresource($name, Services_Twilio_Resource $res)
{
$this->subresources[$name] = $res;
}
protected function setupSubresources()
{
foreach (func_get_args() as $name) {
$constantized = ucfirst(Services_Twilio_Resource::camelize($name));
$type = "Services_Twilio_Rest_" . $constantized;
$this->addSubresource($name, new $type($this));
}
}
public static function decamelize($word)
{
return preg_replace(
'/(^|[a-z])([A-Z])/e',
'strtolower(strlen("\\1") ? "\\1_\\2" : "\\2")',
$word
);
}
public static function camelize($word)
{
return preg_replace('/(^|_)([a-z])/e', 'strtoupper("\\2")', $word);
}
}