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
Throwableobject, pass it to theonErrorhook handlers. (#46) - When
forceRefreshfails and there is a relatedThrowableobject, expose it inRefreshResultvia the newgetErrorExceptionproperty. - Handle unexpected errors in the
forceRefreshmethod (to stop potential unhandled exceptions thrown by the evaluation logic from bringing down the consumer's application).
Breaking changes:
- Rename the
getErrorproperty togetErrorMessageinRefreshResult. (Low impact expected.) - Add an extra parameter of type
?Throwableto theonErrorhook handlers. (Low impact expected.) - Don't include
event_idin 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
Throwableobject, expose it inEvaluationDetailsvia the newgetErrorExceptionproperty. - 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
getErrorproperty togetErrorMessageinEvaluationDetails. - Rename the
getMatchedEvaluationRuleproperty togetMatchedTargetingRuleand thegetMatchedEvaluationPercentageRuleproperty togetMatchedPercentageOptioninEvaluationDetails. - Move config JSON attribute descriptor classes from the
ConfigCat\Attributesto theConfigCat\ConfigJsonnamespace 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\FetchClientInterfaceto give the SDK a custom\Psr\Http\Client\ClientInterfaceimplementation.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_CLIENTconfiguration option where the SDK accepts a custom\ConfigCat\Http\FetchClientInterfaceimplementation. This option defaults to\ConfigCat\Http\GuzzleFetchClient. - The Guzzle specific
\ConfigCat\ClientOptions::REQUEST_OPTIONSand\ConfigCat\ClientOptions::CUSTOM_HANDLERconfiguration 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/guzzlewas not removed yet due to minor upgrade backward compatibility. It can be moved tosuggestat the next major version bump.
- The user has to implement the
-
php-cs-fixerlinter andphpstanstatic 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/logimplementation.
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 ofEvaluationDetailswas renamed togetFetchTimeUnixMilliseconds()and now returns the fetch time infloatUnix milliseconds.
Removed
getVariationId()/getAllVariationIds()methods. Alternative:getValueDetails()/getAllValueDetails()