1. Go to this page and download the library: Download eurym3d0n/elephenv library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
eurym3d0n / elephenv example snippets
use Elephenv\Elephenv;
// Load a .env file from disk.
Elephenv::load(__DIR__ . '/.env');
// Retrieve typed values.
$debug = Elephenv::get('APP_DEBUG'); // true (bool), not "true" (string)
$port = Elephenv::get('DB_PORT'); // 5432 (int), not "5432" (string)
$name = Elephenv::get('APP_NAME'); // "Acme" (string)
use Elephenv\Facade\Env;
Env::load(__DIR__ . '/.env');
$url = Env::get('DATABASE_URL', 'sqlite::memory:');
use Elephenv\Contracts\CasterInterface;
use Elephenv\Enum\CastType;
final class StrictCaster implements CasterInterface
{
public function detect(string $raw): CastType
{
return CastType::String; // Never infer — always keep raw strings.
}
public function cast(mixed $value): mixed
{
return $value; // No-op.
}
}
Elephenv::swap(caster: new StrictCaster());
use Elephenv\Parser\Interpolator;
use Elephenv\Loader\EnvLoader;
$interpolator = new Interpolator(maxDepth: 5);
$loader = new EnvLoader($repository, interpolator: $interpolator);
Elephenv::get('A'); // '' — cycle broken
$env = Elephenv::load('.env');
$env['DB']['host']; // "localhost"
$env['DB']['port']; // 5432
Elephenv::has('DB[host]'); // false — only the inflated key is kept
Elephenv::get('DB'); // ['host' => 'localhost', 'port' => 5432, 'name' => 'myapp']
use Elephenv\Contracts\ArrayFlattenerInterface;
final class DotNotationFlattener implements ArrayFlattenerInterface
{
public function inflate(array $entries): array
{
// Custom implementation supporting DOT.NOTATION keys.
}
}
// Inject via EnvLoader directly.
$loader = new EnvLoader($repository, flattener: new DotNotationFlattener());
use Elephenv\Validation\RuleSet;
$rules = RuleSet::make()
->isRequired() // Value must not be null.
->notEmptyString() // Value must be a non-empty string.
->match('/^https?:\/\//'); // Value must match a PCRE pattern.
Elephenv::load('.env', ['rules' => ['APP_URL' => $rules]]);
RuleSet::make()->isRequired()->allowEmpty()->notEmptyString();
// isRequired is enforced; notEmptyString is skipped.
RuleSet::make()->callback(function (string $name, mixed $value): bool|string {
return filter_var($value, FILTER_VALIDATE_EMAIL) !== false
? true
: sprintf('"%s" must be a valid email address.', $name);
});
use Elephenv\Contracts\ValidatorInterface;
use Elephenv\Exception\ValidationException;
final class PortRangeRule implements ValidatorInterface
{
public function validate(string $name, mixed $value): void
{
if (!is_int($value) || $value < 1 || $value > 65535) {
throw new ValidationException([[
'variable' => $name,
'rule' => 'port_range',
'message' => sprintf('"%s" must be an integer between 1 and 65535.', $name),
]]);
}
}
}
RuleSet::make()->isRequired()->notEmptyString()->add(new PortRangeRule());
// In application bootstrap, after loading all .env files.
Elephenv::checkIntegrity(__DIR__ . '/.env.example');
use Elephenv\Integrity\IntegrityChecker;
$checker = new IntegrityChecker();
$names = $checker->listRequired(__DIR__ . '/.env.example');
// ['APP_NAME', 'APP_ENV', 'DATABASE_URL', 'MAIL_HOST']
Elephenv::swap(integrityChecker: new MyIntegrityChecker());
use Elephenv\Loader\EnvLoader;
use Elephenv\Repository\EnvironmentRepository;
$repository = new EnvironmentRepository();
$loader = new EnvLoader($repository, maxBytes: 512 * 1024); // 512 KiB
use Elephenv\Repository\EnvironmentRepository;
$repository = new EnvironmentRepository(['DB_HOST' => 'localhost']);
Elephenv::swap(repository: $repository);
use Elephenv\Contracts\ErrorRendererInterface;
use Throwable;
final class TestErrorRenderer implements ErrorRendererInterface
{
public function render(Throwable $exception): never
{
throw $exception;
}
}
Elephenv::setErrorRenderer(new TestErrorRenderer());
Elephenv::set('FEATURE_FLAG', true);
// ... test code ...
Elephenv::forget('FEATURE_FLAG');
dotenv
EMPTY_VAR= # Resolved as null
EXPLICIT_EMPTY=empty # Resolved as '' (empty string)
dotenv
export APP_ENV=production
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.