Skip to content

Upgrading vlucas/phpdotenv 3 to 4

Breakingv3.6.10 → v4.3.0Platform1New5Changed6Fixed12Other5

BreakingUpgrade verdict

A platform requirement change.

  • The library now officially works with PHP 8.2.
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.

Platform1
Adds official support for PHP 8.2.

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 = …)