Initial Commit
This commit is contained in:
61
dependencies/stripe/stripe-php/lib/Service/AbstractServiceFactory.php
vendored
Normal file
61
dependencies/stripe/stripe-php/lib/Service/AbstractServiceFactory.php
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace WP_Ultimo\Dependencies\Stripe\Service;
|
||||
|
||||
/**
|
||||
* Abstract base class for all service factories used to expose service
|
||||
* instances through {@link \Stripe\StripeClient}.
|
||||
*
|
||||
* Service factories serve two purposes:
|
||||
*
|
||||
* 1. Expose properties for all services through the `__get()` magic method.
|
||||
* 2. Lazily initialize each service instance the first time the property for
|
||||
* a given service is used.
|
||||
*/
|
||||
abstract class AbstractServiceFactory
|
||||
{
|
||||
/** @var \Stripe\StripeClientInterface */
|
||||
private $client;
|
||||
/** @var array<string, AbstractService|AbstractServiceFactory> */
|
||||
private $services;
|
||||
/**
|
||||
* @param \Stripe\StripeClientInterface $client
|
||||
*/
|
||||
public function __construct($client)
|
||||
{
|
||||
$this->client = $client;
|
||||
$this->services = [];
|
||||
}
|
||||
/**
|
||||
* @param string $name
|
||||
*
|
||||
* @return null|string
|
||||
*/
|
||||
protected abstract function getServiceClass($name);
|
||||
/**
|
||||
* @param string $name
|
||||
*
|
||||
* @return null|AbstractService|AbstractServiceFactory
|
||||
*/
|
||||
public function __get($name)
|
||||
{
|
||||
return $this->getService($name);
|
||||
}
|
||||
/**
|
||||
* @param string $name
|
||||
*
|
||||
* @return null|AbstractService|AbstractServiceFactory
|
||||
*/
|
||||
public function getService($name)
|
||||
{
|
||||
$serviceClass = $this->getServiceClass($name);
|
||||
if (null !== $serviceClass) {
|
||||
if (!\array_key_exists($name, $this->services)) {
|
||||
$this->services[$name] = new $serviceClass($this->client);
|
||||
}
|
||||
return $this->services[$name];
|
||||
}
|
||||
\trigger_error('Undefined property: ' . static::class . '::$' . $name);
|
||||
return null;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user