Skip to content

add store builder and refactor file loading - #1

Open
tomasturner1 wants to merge 1 commit into
base-store-refactor-r-11722390from
tomasturner1/store-refactor-r-11722390
Open

tomasturner1 wants to merge 1 commit into
base-store-refactor-r-11722390from
tomasturner1/store-refactor-r-11722390

Conversation

@tomasturner1

@tomasturner1 tomasturner1 commented Feb 12, 2026 •

Copy link
Copy Markdown

Note

Medium Risk
Touches core env file discovery/reading and changes Dotenv constructor semantics (with deprecation), so regressions could affect loading behavior and error handling across consumers.

Overview
Refactors env file loading to go through a new Dotenv\Store abstraction: Dotenv now holds a StoreInterface and calls $store->read() instead of aggregating file reads itself.

Adds StoreBuilder, FileStore, and file helpers (Store\File\Paths, Store\File\Reader) to construct and read env file contents with optional short-circuit behavior, and updates Dotenv::create() to build a store from paths/names.

Updates safeLoad() to handle missing/unreadable env files via catching InvalidPathException, replaces the old file-loading tests with new store-focused tests, and documents that passing an array to the Dotenv\Dotenv constructor is now deprecated in favor of StoreInterface (removal planned for v5).

Written by Cursor Bugbot for commit e29c3e3. This will update automatically on new commits. Configure here.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Comment thread src/Dotenv.php
$this->repository = $repository;
$this->filePaths = $filePaths;
$this->shortCircuit = $shortCircuit;
$this->store = is_array($store) ? new Store($store, true) : $store;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Constructor references non-existent Store class

High Severity

The constructor uses new Store($store, true) when an array is passed, but no Store class exists in the Dotenv namespace and none is imported. The actual class is Dotenv\Store\FileStore. This causes a fatal error at runtime whenever someone passes an array as the third constructor argument — the deprecated-but-documented usage path described in UPGRADING.md.

Fix in Cursor Fix in Web

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