Skip to content
CAI
Software that uses CAICheck a score

symfony/filesystem

58.1

Adequate · 19 September 2026

1.5k

lines of production code

PHP

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a PHP library providing robust filesystem utilities, centered around a modernized Filesystem component and a new Path class for cross-platform path manipulation. It offers core operations such as reading, writing, copying, and removing files, with strict type enforcement and specific exception handling for error management. The package is designed for PHP 8.4+ and includes comprehensive test coverage to ensure reliability across different platforms.

Behavioural changes

Filesystem component receives major API modernization and new Path utility

The Filesystem component introduces a new Path class for cross-platform path manipulation and significantly modernizes the Filesystem API. Methods like copy(), mkdir(), touch(), and remove() now enforce strict type hints, throw specific exceptions instead of returning booleans, and preserve file permissions and modification times during copy operations. The component also adds new capabilities such as the readFile() method, stream-aware tempnam(), and the ability to append to files with locking. Additionally, legacy behaviors are deprecated or removed, including the removal of array support in dumpFile(), the deprecation of the copy\_on\_windows mirror option in favor of follow\_symlinks, and the removal of the LockHandler class.

(repo-wide) · high confidence

Introduce Filesystem-specific exception classes implementing •Throwable

The Filesystem component now provides a dedicated hierarchy of exception classes (IOException, FileNotFoundException, InvalidArgumentException, RuntimeException) that implement the new ExceptionInterface, which extends PHP's native \\Throwable. This allows users to catch filesystem errors using standard PHP exception handling while accessing specific details like the file path via the getPath() method on IOException.

Exception · high confidence

Test coverage

Added MockStream fixture for testing stream wrappers; Initial test suite for the Filesystem component.

Dependencies

Symfony Filesystem package initialization with PHP 8.4+ requirement

The symfony/filesystem package has been added to the project, providing basic filesystem utilities. This package requires PHP 8.4.1 or higher and includes dependencies on symfony/deprecation-contracts (^2.5\|^3), symfony/polyfill-ctype (\~1.8), and symfony/polyfill-mbstring (\~1.8). Development dependencies include symfony/process (^7.4\|^8.0). The package uses PSR-4 autoloading and excludes test files from the classmap.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 58.

Lenses

  • Code Health 91
  • Architecture 100
  • Maturity 48
  • Readiness 43
  • Security 100

Changes since last survey

  • 300 commits — 266 feature/other, 34 fixes

By area

  • (repo) — 179 commits
  • (root) — 88 commits
  • Tests/FilesystemTest.php — 16 commits
  • Tests/Fixtures — 6 commits
  • Tests/FilesystemTestCase.php — 4 commits
  • Exception/IOException.php — 3 commits
  • Tests/PathTest.php — 3 commits
  • .github/PULL_REQUEST_TEMPLATE.md — 1 commit

Notable commits

  • fix: PHP CS Fixer: fix minor detected issues
  • fix: Apply php-cs-fixer fix --rules nullable_type_declaration_for_default_null_value
  • fix: Backport type fixes
  • fix: Backport type fixes
  • fix: CS fixes
  • fix: CS fixes - native_function_invocation & static_lambda
  • fix: Fix CI
  • fix: Fix CS
  • fix: Fix CS
  • fix: Fix broken symlink tests Windows PHP 7.4+
  • fix: Fix deprecations on PHP 8.2
  • fix: Fix merge
  • fix: Fix php.net links
  • fix: Fix some phpdoc
  • fix: Fix some redundant @return phpdoc
  • fix: Minor fixes around parse_url() checks
  • fix: More CS fixes
  • fix: Revert "minor #54653 Auto-close PRs on subtree-splits (nicolas-grekas)"
  • fix: [Filesystem] Fix Filesystem::remove() on Windows
  • fix: [Filesystem] Fix Path dealing with schemes
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

symfony/filesystem was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 2f6cb2d56b017112e2320ce855394c69fee2897d — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.