Framework

Repository Author Commit message Committed SHA  
 
schema by dg DOCS
schema by dg added Expect::enum()
schema by dg added Expect::listable()
schema by dg DOCS
schema by dg added Expect::tuple()
schema by dg removed support for key PreventMerging, removed Helpers::merge() (BC break)
schema by dg AnyOf::merge() merges layers according to the matched alternative instead of blindly (BC break)
schema by dg Structure::merge() driven by MergeMode; numeric-key appending decoupled from otherItems (BC break)
schema by dg added MergeMode enum, mergeMode() and mergeWith(); Type::merge() merges arrays only according to the schema (BC break)
schema by dg Type: mergeDefaults() are disabled by default (BC break) [Closes #28, Closes #31]
schema by dg Schema::merge() receives Context and reports merge errors through it (BC break)
schema by dg used #Deprecated
schema by dg Expect::from() works with class names
schema by dg Expect::from() removed support for phpDoc annotations (BC break)
schema by dg Schema: added return type hints (BC break)
schema by dg opened 2.0-dev
schema by dg added schema inspection (describe()) and JSON Schema export

Type, Structure and AnyOf report what they accept as a plain array with a
closed Kind vocabulary; child schemas are reported as they are. TypeExpression
is the single translator of the Expect::type() language into that array and
follows Validators::is() exactly (an unknown name is a class, 'int[]' is any
iterable of ints, legacy validator names are Other). JsonSchema::export() is
a pure function over describe() and refuses PHP-only types instead of emitting
a schema the Processor would reject.

Everything is @internal for now so the vocabulary can still change.

schema by dg added description() to schema elements
schema by dg Base: multiple before() handlers are chained instead of silently replaced
schema by dg opened 1.4-dev
schema by dg Type: nullable arrays are not coerced from null to empty array
schema by dg Message: unknown placeholders are left untouched
schema by dg Type: items with invalid keys are dropped instead of collapsing into one key
schema by dg Processor: getWarnings() can be called before processing
schema by dg Processor: fixed typo in method name throwErrors()
schema by dg Helpers::getCastStrategy() reports target class when instantiation fails
schema by dg Helpers::getCastStrategy() supports backed enums
schema by dg Structure: deprecated() does not warn when item is missing in input
schema by dg AnyOf: fixed loss of dynamics and skipDefaults in inner context
schema by dg CI: switched Coveralls upload to the official action

The php-coveralls phar is replaced by coverallsapp/github-action, which
resolves the token and the absolute paths in the Clover report on its
own, so tests/.coveralls.yml is no longer needed.

Coverage is now uploaded even when tests crash under phpdbg. Being
phpdbg-compatible is not a goal, but until now the failing step aborted
the job before the upload ever ran. The job-level continue-on-error is
gone, so genuine failures, including a rejected upload, are visible.

application by dg Presenter::argsToParams() now distinguish between NULL and ''
application by dg removed {templatePrint}

Last synchronization: 2026-08-18 04:02:42