Skip to content

Require PHP 8.2 and modernize tooling (1.2.0) - #43

Merged
DEVizzent merged 11 commits into
masterfrom
chore/1.2.0-drop-eol-versions
Nov 6, 2026
Merged

DEVizzent merged 11 commits into
masterfrom
chore/1.2.0-drop-eol-versions

Conversation

@DEVizzent

Copy link
Copy Markdown
Owner

Includes the commits of #42. Merge #42 first and this PR will show only its own changes.

Summary

  • Requirements: PHP ^8.2, symfony/yaml ^6.4 || ^7.4 || ^8.0 and justinrainbow/json-schema ^6.0. The conflict block is gone.
  • ext-mbstring: no longer needed. It was used in ReferenceContext::dirname() without being declared.
  • Tests: doc-comment metadata migrated to attributes, a single phpunit.xml.dist, PHPUnit ^11.5 || ^12.0 || ^13.0.
  • Tools: PHPStan 2.x and PHP-CS-Fixer 3.x, the latter downloaded with a verified checksum.
  • CI: PHP 8.2 to 8.5, plus 8.6 without failing the build. Actions updated, Dependabot added, COMPOSER_NO_BLOCKING removed.
  • Docker: PHP 8.2 image, Xdebug 3 settings, no apt-key.

Compatibility

No public API changes. Composer keeps projects on older PHP or symfony/yaml versions on 1.1.x.

Test plan

  • CI passes. Nothing has been run locally: no PHP was available.
  • PHPStan 2.x and PHP-CS-Fixer 3.x may report new findings, as they have never run on this code.
  • make coverage works with #[CoversClass]. Its class lists were compared locally and match.
  • The Docker image builds. CI does not cover it.

🤖 Generated with Claude Code

DEVizzent and others added 11 commits November 6, 2026 14:26
speccy has had no commits since 2019 and its transitive dependencies are
reported by security scanners. package.json was shipped in the Composer
package, so projects depending on this library got those reports too.

Remove package.json and yarn.lock together with the Node tooling. make lint
keeps validating the test data with bin/php-openapi. Also exclude doc/ from
the distributed package.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every $ref URI was passed to file_get_contents(), so a specification could
use any stream wrapper (php://, data://, phar://) and a remote document could
read local files.

By default only file, http, https and the scheme of the base document are
allowed now, and documents loaded via http(s) can not reference file URIs.
Add ReferenceContext::$allowedSchemes and $uriFilter to restrict this further
and $httpTimeout for remote references.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Composer now blocks versions affected by security advisories, so the jobs
for symfony/yaml ^3.4, ^4, 5.4.2 and ^6 on PHP 8.0 fail while installing.
composer.json still allows these versions, so CI keeps testing them until
support is dropped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
symfony/yaml 8.1 dumps empty maps as "{}" instead of "{  }". Both are the
same YAML, so normalize the output before comparing it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Drop PHP versions and symfony/yaml and justinrainbow/json-schema versions
that are no longer supported. Composer already refuses to install the old
symfony/yaml versions by default because of their security advisories.

ReferenceContext::dirname() no longer needs ext-mbstring, which was used
without being declared: "/" is a single byte in UTF-8.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PHPUnit 12 no longer reads metadata from doc-comments. Use attributes, which
work on all supported PHPUnit versions, and keep a single PHPUnit config.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Upgrade PHPStan to 2.x and PHP-CS-Fixer to 3.x, with a verified checksum
- Test PHP 8.2 to 8.5 in CI and PHP 8.6 without failing the build
- Update GitHub Actions and add Dependabot for Composer and Actions
- Remove the Composer blocking override, which is not needed anymore
- Update the Docker image and Xdebug settings

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Master has the same content as this branch's base with different hashes, so
the tree of this branch stays unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Remove the unused fourth data set value, which PHPUnit 12 reports
- Avoid a caret in the Windows constraint, composer.bat drops it
- Do not treat PHPDoc types as certain in PHPStan: spec data is only known at
  runtime and the checks based on these types must stay
- Report code style violations as annotations with cs2pr
- Restore LF line endings in the workflows and the Dockerfile

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
grep -P does not exist on macOS. Its error left both class lists empty, so the
check passed there without comparing anything.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@DEVizzent
DEVizzent merged commit 11cb51c into master Nov 6, 2026
47 of 48 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant