Releases: configcat/php-sdk
Releases · configcat/php-sdk
v9.2.0
v9.1.1
v9.1.0
New features and improvements:
- When an error occurs and there is a related
Throwable
object, pass it to theonError
hook handlers. (#46) - When
forceRefresh
fails and there is a relatedThrowable
object, expose it inRefreshResult
via the newgetErrorException
property. - Handle unexpected errors in the
forceRefresh
method (to stop potential unhandled exceptions thrown by the evaluation logic from bringing down the consumer's application).
Breaking changes:
- Rename the
getError
property togetErrorMessage
inRefreshResult
. (Low impact expected.) - Add an extra parameter of type
?Throwable
to theonError
hook handlers. (Low impact expected.) - Don't include
event_id
in the log message but leave it up to the actual logger implementation to choose the log message format. (Affects consumers using custom logging only.)
v9.0.0
New features and improvements:
- Add support for the new Config JSON v6 format: update the config model and implement new features in setting evaluation logic. (#44)
- Overhaul setting evaluation-related logging and make it consistent across SDKs.
- Improve consistency of config JSON deserialization error reporting.
- Add exception message and stack trace to the log format of the default logger.
- When evaluation fails and there is a related
Throwable
object, expose it inEvaluationDetails
via the newgetErrorException
property. - Performance improvements to setting evaluation (building of evaluation log is expensive, so it is skipped when info level logging is turned off).
Bug fixes:
- Fix inconsistent logging of error 1000 in the case of flag overrides.
Breaking changes (listed in the order of expected impact):
- Rename the
getError
property togetErrorMessage
inEvaluationDetails
. - Rename the
getMatchedEvaluationRule
property togetMatchedTargetingRule
and thegetMatchedEvaluationPercentageRule
property togetMatchedPercentageOption
inEvaluationDetails
. - Move config JSON attribute descriptor classes from the
ConfigCat\Attributes
to theConfigCat\ConfigJson
namespace and update them to support config JSON schema v6.
v8.1.0
Added
-
Ability to override the default Guzzle HTTP client with a custom one:
- The user has to implement the
\ConfigCat\Http\FetchClientInterface
to give the SDK a custom\Psr\Http\Client\ClientInterface
implementation.namespace ConfigCat\Http; interface FetchClientInterface { public function getClient(): \Psr\Http\Client\ClientInterface; public function createRequest(string $method, string $uri): \Psr\Http\Message\RequestInterface; }
- There's a new
\ConfigCat\ClientOptions::FETCH_CLIENT
configuration option where the SDK accepts a custom\ConfigCat\Http\FetchClientInterface
implementation. This option defaults to\ConfigCat\Http\GuzzleFetchClient
. - The Guzzle specific
\ConfigCat\ClientOptions::REQUEST_OPTIONS
and\ConfigCat\ClientOptions::CUSTOM_HANDLER
configuration options have been marked as deprecated. Options for Guzzle are available through the\ConfigCat\Http\GuzzleFetchClient::create()
method:$client = new \ConfigCat\ConfigCatClient('<SDK-KEY>', [ \ConfigCat\ClientOptions::FETCH_CLIENT => \ConfigCat\Http\GuzzleFetchClient::create([ \GuzzleHttp\RequestOptions::CONNECT_TIMEOUT => 5, ]), ]);
- The direct dependency to
guzzlehttp/guzzle
was not removed yet due to minor upgrade backward compatibility. It can be moved tosuggest
at the next major version bump.
- The user has to implement the
-
php-cs-fixer
linter andphpstan
static analyzer to the CI workflow. The whole project was reformatted and analyzed, this is why this PR is bigger than usual.
Removed
- Dependency to Monolog. It was replaced by a simple default logger that writes to
error_log()
. It's still replaceable with anypsr/log
implementation.
v8.0.0
Changed
- Standardized config cache key generation algorithm and cache payload format to allow shared caches to be used by SDKs of different platforms.
getFetchTimeUnixSeconds()
getter ofEvaluationDetails
was renamed togetFetchTimeUnixMilliseconds()
and now returns the fetch time infloat
Unix milliseconds.
Removed
getVariationId()
/getAllVariationIds()
methods. Alternative:getValueDetails()
/getAllValueDetails()