wppaste
WordPress

AbstractProvider

Since
0.1.0
Source
wp-includes/php-ai-client/src/Providers/AbstractProvider.php:18
Base class for a provider.

Compatibility

WordPress
since 0.1.0
  • 6.7.7
  • 6.8.8
  • 6.9.7
  • 7.0.4
  • 7.1.0

Present in 2 of the 5 tracked releases, added in 0.1.0.

Properties · 3

$metadataCacheWordPress\AiClient\Providers\array<string,private static
$availabilityCacheWordPress\AiClient\Providers\array<string,private static
$modelMetadataDirectoryCacheWordPress\AiClient\Providers\array<string,private static

Methods · 8

Source code

abstract class AbstractProvider implements ProviderInterface{    /**     * @var array<string, ProviderMetadata> Cache for provider metadata per class.     */    private static array $metadataCache = [];    /**     * @var array<string, ProviderAvailabilityInterface> Cache for provider availability per class.     */    private static array $availabilityCache = [];    /**     * @var array<string, ModelMetadataDirectoryInterface> Cache for model metadata directory per class.     */    private static array $modelMetadataDirectoryCache = [];    /**     * {@inheritDoc}     *     * @since 0.1.0     */    final public static function metadata(): ProviderMetadata    {        $className = static::class;        if (!isset(self::$metadataCache[$className])) {            self::$metadataCache[$className] = static::createProviderMetadata();        }        return self::$metadataCache[$className];    }    /**     * {@inheritDoc}     *     * @since 0.1.0     */    final public static function model(string $modelId, ?ModelConfig $modelConfig = null): ModelInterface    {        $providerMetadata = static::metadata();        $modelMetadata = static::modelMetadataDirectory()->getModelMetadata($modelId);        $model = static::createModel($modelMetadata, $providerMetadata);        if ($modelConfig) {            $model->setConfig($modelConfig);        }        return $model;    }    /**     * {@inheritDoc}     *     * @since 0.1.0     */    final public static function availability(): ProviderAvailabilityInterface    {        $className = static::class;        if (!isset(self::$availabilityCache[$className])) {            self::$availabilityCache[$className] = static::createProviderAvailability();        }        return self::$availabilityCache[$className];    }    /**     * {@inheritDoc}     *     * @since 0.1.0     */    final public static function modelMetadataDirectory(): ModelMetadataDirectoryInterface    {        $className = static::class;        if (!isset(self::$modelMetadataDirectoryCache[$className])) {            self::$modelMetadataDirectoryCache[$className] = static::createModelMetadataDirectory();        }        return self::$modelMetadataDirectoryCache[$className];    }    /**     * Creates a model instance based on the given model metadata and provider metadata.     *     * @since 0.1.0     *     * @param ModelMetadata $modelMetadata The model metadata.     * @param ProviderMetadata $providerMetadata The provider metadata.     * @return ModelInterface The new model instance.     */    abstract protected static function createModel(ModelMetadata $modelMetadata, ProviderMetadata $providerMetadata): ModelInterface;    /**     * Creates the provider metadata instance.

Changelog

Introduced in 0.1.0. Unchanged from 7.0.4 through 7.1.0.

  1. 7.0.4
  2. 7.1.0

Signature, return type and hooks compared across 2 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 7.1.0 tag, from src/wp-includes/php-ai-client/src/Providers/AbstractProvider.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.