Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Env Laravel Package

php-standard-library/env

Tiny PHP utility for reading environment variables with sensible defaults and type casting. Helps centralize access to config via env(), supports required keys, fallback values, and safe handling when variables are missing or empty.

View on GitHub
Deep Wiki
Context7

Functions for inspecting and modifying environment variables, working directory, and paths

Frequently asked questions about Env
Can I use this package in a Laravel project to replace `env()` or `config()`?
This package is best suited for non-web Laravel layers like Artisan commands, queues, or jobs where Laravel’s `env()` isn’t available. For web requests, Laravel’s `config()` caching remains superior. You can wrap Laravel’s `env()` with a facade for consistency, but it’s not a direct replacement for `config()`.
How does this handle type casting compared to Laravel’s native `env()`?
Unlike Laravel’s `env()`, which returns raw strings, this package offers typed helpers like `envBool()`, `envInt()`, and `envString()` for automatic type casting. This reduces runtime errors and improves IDE support (e.g., PHPStan). However, edge cases like `'yes'` vs. `'true'` for booleans require explicit validation rules.
Will this work with Laravel’s `.env` files, or does it need a separate config source?
It works seamlessly with Laravel’s `.env` files since it reads from `$_ENV` or `getenv()`. However, for distributed systems or microservices, it’s ideal for centralized secrets management (e.g., Docker/K8s secrets, CI/CD variables) where `.env` files aren’t practical. It enforces a single source of truth across non-Laravel components.
Does this package support fallback values if an environment variable is missing?
Yes, all functions accept fallback values. For example, `envString('DB_HOST', 'localhost')` returns `'localhost'` if `DB_HOST` is undefined. This mirrors Laravel’s `env()` behavior but with stricter typing and consistency across framework-agnostic code.
How do I mock environment variables in PHPUnit tests?
Since the package reads from `$_ENV` or `getenv()`, you can mock environment variables in tests using PHPUnit’s `setenv()` or by overriding `$_ENV` directly. For example, `putenv('TEST_VAR=value')` before tests or use `getenv()` overrides in your test setup. The package doesn’t enforce a specific testing pattern.
Is this package compatible with Laravel 10+ and PHP 8.2+?
Yes, the package has no hard dependencies beyond PHP core and is framework-agnostic, so it works with Laravel 10+ and PHP 8.2+. It’s designed for modern PHP and doesn’t rely on deprecated features. Always check the [latest release](https://github.com/php-standard-library/env/releases) for minor version updates.
Can I use this in a microservice architecture where secrets are managed via Vault or AWS SSM?
Absolutely. The package reads from environment variables, so you can integrate it with secrets managers by injecting variables into your environment (e.g., via Docker/K8s secrets or CI/CD pipelines). For dynamic secrets, use the package’s typed helpers to safely access and validate values fetched from Vault or SSM.
What’s the performance impact of using this over `getenv()` or `$_ENV` directly?
The performance overhead is negligible for most use cases. The package adds minimal abstraction over `getenv()` or `$_ENV`, but it’s not optimized for high-frequency CLI tools (e.g., cron jobs). For such cases, consider caching critical variables or using Laravel’s built-in `env()` caching for web contexts.
Does this package support required environment variables (e.g., fail fast if missing)?
Yes, you can enforce required variables by omitting fallback values and handling exceptions. For example, `envString('REQUIRED_VAR')` will return `null` if the variable is missing; you can then throw an exception or use a default. The package doesn’t auto-fail but provides the tools to implement strict validation.
Are there alternatives to this package for Laravel-specific env variable handling?
For Laravel-specific needs, stick with Laravel’s built-in `env()` or `config()` helpers, which are optimized for caching and `.env` files. This package shines in non-Laravel contexts (e.g., shared libraries, CLI tools) or when you need stricter typing and consistency across a multi-repo ecosystem. Alternatives like `vlucas/phpdotenv` focus on `.env` parsing but lack typed access.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope