Upgrading vlucas/phpdotenv 3 to 4
Breakingv3.6.10 → v4.3.0Platform1New5Changed6Fixed12Other5
BreakingUpgrade verdict
A platform requirement change.
In plain terms
- The library now officially works with PHP 8.2.
Must act 1 item needs code or config changes
vlucas/phpdotenv publishes an official migration guide for version 4. It covers more than the release notes do.
Upgrading guide ↗PHP requirement changed in v4.1.5: ^5.4 || ^7.0 || ^8.0 → ^5.5.9 || ^7.0 || ^8.0.
What you must change
Platform1
Adds official support for PHP 8.2.
API changes
Generated by DepDelta from published PHP source. Not mixed with prose notes.
- removed:
class Lines - removed:
class Loader - removed:
class Parser - removed:
const Parser.COMMENT_STATE - removed:
const Parser.ESCAPE_STATE - removed:
const Parser.INITIAL_STATE - removed:
const Parser.QUOTED_STATE - removed:
const Parser.UNQUOTED_STATE - removed:
const Parser.WHITESPACE_STATE - removed:
constructor Loader(array $filePaths, FactoryInterface $envFactory, $immutable = …) - removed:
method Dotenv.getEnvironmentVariableNames() - removed:
method Dotenv.overload() - removed:
method Loader.clearEnvironmentVariable($name) - removed:
method Loader.getEnvironmentVariable($name) - removed:
method Loader.getEnvironmentVariableNames() - removed:
method Loader.load() - removed:
method Loader.loadDirect($content) - removed:
method Loader.setEnvironmentVariable($name, $value = …) - removed:
method Loader.setImmutable($immutable = …) - removed:
protected method Dotenv.loadData($overload = …) - removed:
protected property Loader.envFactory - removed:
protected property Loader.envVariables - removed:
protected property Loader.filePaths - removed:
protected property Loader.variableNames - removed:
protected property Validator.loader - removed:
static method Lines.process(array $lines) - removed:
static method Parser.parse($entry) - changed:
constructor Dotenv(Loader $loader) → constructor Dotenv(LoaderInterface $loader, RepositoryInterface $repository, $store) - changed:
constructor Validator(array $variables, Loader $loader, $required = …) → constructor Validator(RepositoryInterface $repository, array $variables, $required = …) - changed:
static method Dotenv.create($paths, $file = …, FactoryInterface $envFactory = …) → static method Dotenv.create(RepositoryInterface $repository, $paths, $names = …, $shortCircuit = …) - added:
protected property Dotenv.repository - added:
protected property Dotenv.store - added:
protected property Validator.repository - added:
static method Dotenv.createArrayBacked($paths, $names = …, $shortCircuit = …) - added:
static method Dotenv.createImmutable($paths, $names = …, $shortCircuit = …) - added:
static method Dotenv.createMutable($paths, $names = …, $shortCircuit = …) - added:
static method Dotenv.parse($content)
- removed:
abstract class AbstractVariables implements VariablesInterface - removed:
class DotenvFactory implements FactoryInterface - removed:
class DotenvVariables extends AbstractVariables - removed:
constructor AbstractVariables($immutable) - removed:
constructor DotenvFactory(array $adapters = …) - removed:
constructor DotenvVariables(array $adapters, $immutable) - removed:
interface FactoryInterface - removed:
interface VariablesInterface extends ArrayAccess - removed:
method AbstractVariables.clear($name) - removed:
method AbstractVariables.get($name) - removed:
method AbstractVariables.has($name) - removed:
method AbstractVariables.isImmutable() - removed:
method AbstractVariables.offsetExists($offset) - removed:
method AbstractVariables.offsetGet($offset) - removed:
method AbstractVariables.offsetSet($offset, $value) - removed:
method AbstractVariables.offsetUnset($offset) - removed:
method AbstractVariables.set($name, $value = …) - removed:
method DotenvFactory.create() - removed:
method DotenvFactory.createImmutable() - removed:
method FactoryInterface.create() - removed:
method FactoryInterface.createImmutable() - removed:
method VariablesInterface.clear($name) - removed:
method VariablesInterface.get($name) - removed:
method VariablesInterface.has($name) - removed:
method VariablesInterface.isImmutable() - removed:
method VariablesInterface.set($name, $value = …) - removed:
protected method AbstractVariables.clearInternal($name) - removed:
protected method AbstractVariables.getInternal($name) - removed:
protected method AbstractVariables.setInternal($name, $value = …) - removed:
protected method DotenvVariables.clearInternal($name) - removed:
protected method DotenvVariables.getInternal($name) - removed:
protected method DotenvVariables.setInternal($name, $value = …) - removed:
protected property DotenvFactory.adapters - removed:
protected property DotenvVariables.adapters
- removed:
class ApacheAdapter implements AdapterInterface - removed:
class ArrayAdapter implements AdapterInterface - removed:
class EnvConstAdapter implements AdapterInterface - removed:
class PutenvAdapter implements AdapterInterface - removed:
class ServerConstAdapter implements AdapterInterface - removed:
interface AdapterInterface - removed:
method AdapterInterface.clear($name) - removed:
method AdapterInterface.get($name) - removed:
method AdapterInterface.isSupported() - removed:
method AdapterInterface.set($name, $value = …) - removed:
method ApacheAdapter.clear($name) - removed:
method ApacheAdapter.get($name) - removed:
method ApacheAdapter.isSupported() - removed:
method ApacheAdapter.set($name, $value = …) - removed:
method ArrayAdapter.clear($name) - removed:
method ArrayAdapter.get($name) - removed:
method ArrayAdapter.isSupported() - removed:
method ArrayAdapter.set($name, $value = …) - removed:
method EnvConstAdapter.clear($name) - removed:
method EnvConstAdapter.get($name) - removed:
method EnvConstAdapter.isSupported() - removed:
method EnvConstAdapter.set($name, $value = …) - removed:
method PutenvAdapter.clear($name) - removed:
method PutenvAdapter.get($name) - removed:
method PutenvAdapter.isSupported() - removed:
method PutenvAdapter.set($name, $value = …) - removed:
method ServerConstAdapter.clear($name) - removed:
method ServerConstAdapter.get($name) - removed:
method ServerConstAdapter.isSupported() - removed:
method ServerConstAdapter.set($name, $value = …)
- added:
class Lines - added:
class Loader implements LoaderInterface - added:
class Parser - added:
class Value - added:
const Parser.COMMENT_STATE - added:
const Parser.DOUBLE_QUOTED_STATE - added:
const Parser.ESCAPE_SEQUENCE_STATE - added:
const Parser.INITIAL_STATE - added:
const Parser.SINGLE_QUOTED_STATE - added:
const Parser.UNQUOTED_STATE - added:
const Parser.WHITESPACE_STATE - added:
constructor Loader(array $whitelist = …) - added:
interface LoaderInterface - added:
method Loader.load(RepositoryInterface $repository, $content) - added:
method LoaderInterface.load(RepositoryInterface $repository, $content) - added:
method Value.append($char, $var) - added:
method Value.getChars() - added:
method Value.getVars() - added:
protected property Loader.whitelist - added:
static method Lines.process(array $lines) - added:
static method Parser.parse($entry) - added:
static method Value.blank()
- removed:
abstract class Result - removed:
class Error extends Result - removed:
class Success extends Result - removed:
method Error.error() - removed:
method Error.mapError(callable $f) - removed:
method Error.mapSuccess(callable $f) - removed:
method Error.success() - removed:
method Result.error() - removed:
method Result.getError() - removed:
method Result.getSuccess() - removed:
method Result.mapError(callable $f) - removed:
method Result.mapSuccess(callable $f) - removed:
method Result.success() - removed:
method Success.error() - removed:
method Success.mapError(callable $f) - removed:
method Success.mapSuccess(callable $f) - removed:
method Success.success() - removed:
static method Error.create($value) - removed:
static method Success.create($value) - changed:
static method Regex.replace($pattern, $replacement, $subject) → static method Regex.replace($pattern, $replacement, $subject, $limit = …) - changed:
static method Regex.replaceCallback($pattern, callable $callback, $subject) → static method Regex.replaceCallback($pattern, callable $callback, $subject, $limit = …) - added:
static method Regex.split($pattern, $subject)
- added:
abstract class AbstractRepository implements RepositoryInterface - added:
class AdapterRepository extends AbstractRepository - added:
class RepositoryBuilder - added:
constructor AbstractRepository($immutable) - added:
constructor AdapterRepository(array $readers, array $writers, $immutable) - added:
interface RepositoryInterface extends ArrayAccess - added:
method AbstractRepository.clear($name) - added:
method AbstractRepository.get($name) - added:
method AbstractRepository.has($name) - added:
method AbstractRepository.offsetExists($offset) - added:
method AbstractRepository.offsetGet($offset) - added:
method AbstractRepository.offsetSet($offset, $value) - added:
method AbstractRepository.offsetUnset($offset) - added:
method AbstractRepository.set($name, $value = …) - added:
method RepositoryBuilder.immutable() - added:
method RepositoryBuilder.make() - added:
method RepositoryBuilder.withReaders(array $readers = …) - added:
method RepositoryBuilder.withWriters(array $writers = …) - added:
method RepositoryInterface.clear($name) - added:
method RepositoryInterface.get($name) - added:
method RepositoryInterface.has($name) - added:
method RepositoryInterface.set($name, $value = …) - added:
protected method AbstractRepository.clearInternal($name) - added:
protected method AbstractRepository.getInternal($name) - added:
protected method AbstractRepository.setInternal($name, $value = …) - added:
protected method AdapterRepository.clearInternal($name) - added:
protected method AdapterRepository.getInternal($name) - added:
protected method AdapterRepository.setInternal($name, $value = …) - added:
protected property AdapterRepository.readers - added:
protected property AdapterRepository.writers - added:
static method RepositoryBuilder.create()
- added:
class ApacheAdapter implements AvailabilityInterface, ReaderInterface, WriterInterface - added:
class ArrayAdapter implements AvailabilityInterface, ReaderInterface, WriterInterface - added:
class EnvConstAdapter implements AvailabilityInterface, ReaderInterface, WriterInterface - added:
class PutenvAdapter implements AvailabilityInterface, ReaderInterface, WriterInterface - added:
class ServerConstAdapter implements AvailabilityInterface, ReaderInterface, WriterInterface - added:
interface AvailabilityInterface - added:
interface ReaderInterface extends AvailabilityInterface - added:
interface WriterInterface extends AvailabilityInterface - added:
method ApacheAdapter.clear($name) - added:
method ApacheAdapter.get($name) - added:
method ApacheAdapter.isSupported() - added:
method ApacheAdapter.set($name, $value = …) - added:
method ArrayAdapter.clear($name) - added:
method ArrayAdapter.get($name) - added:
method ArrayAdapter.isSupported() - added:
method ArrayAdapter.set($name, $value = …) - added:
method AvailabilityInterface.isSupported() - added:
method EnvConstAdapter.clear($name) - added:
method EnvConstAdapter.get($name) - added:
method EnvConstAdapter.isSupported() - added:
method EnvConstAdapter.set($name, $value = …) - added:
method PutenvAdapter.clear($name) - added:
method PutenvAdapter.get($name) - added:
method PutenvAdapter.isSupported() - added:
method PutenvAdapter.set($name, $value = …) - added:
method ReaderInterface.get($name) - added:
method ServerConstAdapter.clear($name) - added:
method ServerConstAdapter.get($name) - added:
method ServerConstAdapter.isSupported() - added:
method ServerConstAdapter.set($name, $value = …) - added:
method WriterInterface.clear($name) - added:
method WriterInterface.set($name, $value = …)
- added:
abstract class Result - added:
class Error extends Result - added:
class Success extends Result - added:
method Error.error() - added:
method Error.mapError(callable $f) - added:
method Error.mapSuccess(callable $f) - added:
method Error.success() - added:
method Result.error() - added:
method Result.getError() - added:
method Result.getSuccess() - added:
method Result.mapError(callable $f) - added:
method Result.mapSuccess(callable $f) - added:
method Result.success() - added:
method Success.error() - added:
method Success.mapError(callable $f) - added:
method Success.mapSuccess(callable $f) - added:
method Success.success() - added:
static method Error.create($value) - added:
static method Success.create($value)
- added:
class FileStore implements StoreInterface - added:
class StoreBuilder - added:
constructor FileStore(array $filePaths, $shortCircuit) - added:
constructor StringStore($content) - added:
final class StringStore implements StoreInterface - added:
interface StoreInterface - added:
method FileStore.read() - added:
method StoreBuilder.make() - added:
method StoreBuilder.shortCircuit() - added:
method StoreBuilder.withNames($names = …) - added:
method StoreBuilder.withPaths($paths) - added:
method StoreInterface.read() - added:
method StringStore.read() - added:
protected property FileStore.filePaths - added:
protected property FileStore.shortCircuit - added:
protected property StoreBuilder.shortCircuit - added:
static method StoreBuilder.create()
- added:
class Paths - added:
class Reader - added:
static method Paths.filePaths(array $paths, array $names) - added:
static method Reader.read(array $filePaths, $shortCircuit = …)