Skip to content

Upgrading symfony/console 4 to 5

Breakingv4.4.49 → v5.4.55Breaking10Security1Deprecated1New7Changed5Fixed124

Fetching 104 releases from GitHub…103 / 104
BreakingUpgrade verdict

10 breaking changes and a security fix.

  • Hidden commands can no longer be run by typing a shortened version of their name. You must type the full name.
  • One table styling method was replaced by a new one with a different name.
  • The method for setting the horizontal border character was replaced by a new method.
  • The method for reading the horizontal border character was replaced by a new method.
Top 5 of 12 that need code or config changes

PHP requirement changed in v5.1.0-RC2: >=7.1.3 → >=7.2.5.

Breaking10
Removes support for finding hidden commands using an abbreviation; use the full name instead.
Removes TableStyle::setCrossingChar() in favor of TableStyle::setDefaultCrossingChar().
TableStyle::setCrossingChar()TableStyle::setDefaultCrossingChar()
Removes TableStyle::setHorizontalBorderChar() in favor of TableStyle::setDefaultCrossingChars().
TableStyle::setHorizontalBorderChar()TableStyle::setDefaultCrossingChars()
Removes TableStyle::getHorizontalBorderChar() in favor of TableStyle::getBorderChars().
TableStyle::getHorizontalBorderChar()TableStyle::getBorderChars()
Removes TableStyle::setVerticalBorderChar() in favor of TableStyle::setVerticalBorderChars().
TableStyle::setVerticalBorderChar()TableStyle::setVerticalBorderChars()
Removes TableStyle::getVerticalBorderChar() in favor of TableStyle::getBorderChars().
TableStyle::getVerticalBorderChar()TableStyle::getBorderChars()
Removes support for returning null from Command::execute(); return 0 instead.
Command::execute()
Renames Application::renderException() and Application::doRenderException() to renderThrowable() and doRenderThrowable().
Application::renderException()Application::doRenderException()Application::renderThrowable()Application::doRenderThrowable()
ProcessHelper::run() accepts only array|Symfony\Component\Process\Process for its command argument.
ProcessHelper::run()Symfony\Component\Process\Process
Application::setDispatcher accepts only Symfony\Contracts\EventDispatcher\EventDispatcherInterface for its dispatcher argument.
Application::setDispatcherSymfony\Contracts\EventDispatcher\EventDispatcherInterface
Security1
Escapes context strings written to the terminal to prevent terminal escape sequence injection.
Deprecated1
Deprecates HelperSet::setCommand() and getCommand().
HelperSet::setCommand()HelperSet::getCommand()

Generated by DepDelta from published PHP source. Not mixed with prose notes.

  • removed: method Application.renderException(\Exception $e, OutputInterface $output)
  • removed: protected method Application.doRenderException(\Exception $e, OutputInterface $output)
  • changed: method Application.all($namespace = …) → method Application.all(?string $namespace = …)
  • changed: method Application.extractNamespace($name, $limit = …) → method Application.extractNamespace(string $name, ?int $limit = …)
  • changed: method Application.find($name) → method Application.find(string $name)
  • changed: method Application.findNamespace($namespace) → method Application.findNamespace(string $namespace)
  • changed: method Application.get($name) → method Application.get(string $name)
  • changed: method Application.has($name) → method Application.has(string $name)
  • changed: method Application.register($name) → method Application.register(string $name)
  • changed: method Application.run(InputInterface $input = …, OutputInterface $output = …) → method Application.run(?InputInterface $input = …, ?OutputInterface $output = …)
  • changed: method Application.setAutoExit($boolean) → method Application.setAutoExit(bool $boolean)
  • changed: method Application.setCatchExceptions($boolean) → method Application.setCatchExceptions(bool $boolean)
  • changed: method Application.setDefaultCommand($commandName, $isSingleCommand = …) → method Application.setDefaultCommand(string $commandName, bool $isSingleCommand = …)
  • changed: method Application.setName($name) → method Application.setName(string $name)
  • changed: method Application.setVersion($version) → method Application.setVersion(string $version)
  • changed: static method Application.getAbbreviations($names) → static method Application.getAbbreviations(array $names)
  • changed: static method Terminal.hasSttyAvailable() → static method Terminal.hasSttyAvailable(): bool
  • added: class SingleCommandApplication extends Command
  • added: const ConsoleEvents.ALIASES
  • added: const ConsoleEvents.SIGNAL
  • added: constructor Color(string $foreground = …, string $background = …, array $options = …)
  • added: constructor Cursor(OutputInterface $output, $input = …)
  • added: final class Color
  • added: final class Cursor
  • added: method Application.complete(CompletionInput $input, CompletionSuggestions $suggestions): void
  • added: method Application.getSignalRegistry(): SignalRegistry
  • added: method Application.setSignalsToDispatchEvent(int ...$signalsToDispatchEvent)
  • added: method Color.apply(string $text): string
  • added: method Color.set(): string
  • added: method Color.unset(): string
  • added: method Cursor.clearLine(): self
  • added: method Cursor.clearLineAfter(): self
  • added: method Cursor.clearOutput(): self
  • added: method Cursor.clearScreen(): self
  • added: method Cursor.getCurrentPosition(): array
  • added: method Cursor.hide(): self
  • added: method Cursor.moveDown(int $lines = …): self
  • added: method Cursor.moveLeft(int $columns = …): self
  • added: method Cursor.moveRight(int $columns = …): self
  • added: method Cursor.moveToColumn(int $column): self
  • added: method Cursor.moveToPosition(int $column, int $row): self
  • added: method Cursor.moveUp(int $lines = …): self
  • added: method Cursor.restorePosition(): self
  • added: method Cursor.savePosition(): self
  • added: method Cursor.show(): self
  • added: method SingleCommandApplication.run(?InputInterface $input = …, ?OutputInterface $output = …): int
  • added: method SingleCommandApplication.setAutoExit(bool $autoExit): self
  • added: method SingleCommandApplication.setVersion(string $version): self
  • added: class AsCommand
  • added: constructor AsCommand(string $name, ?string $description = …, array $aliases = …, bool $hidden = …)
  • added: property AsCommand.description: ?string
  • added: property AsCommand.name: string
  • added: class GithubActionReporter
  • added: constructor GithubActionReporter(OutputInterface $output)
  • added: method GithubActionReporter.debug(string $message, ?string $file = …, ?int $line = …, ?int $col = …): void
  • added: method GithubActionReporter.error(string $message, ?string $file = …, ?int $line = …, ?int $col = …): void
  • added: method GithubActionReporter.warning(string $message, ?string $file = …, ?int $line = …, ?int $col = …): void
  • added: static method GithubActionReporter.isGithubActionEnvironment(): bool
  • removed: method ListCommand.getNativeDefinition()
  • changed: constructor Command(string $name = …) → constructor Command(?string $name = …)
  • changed: method Command.addArgument($name, $mode = …, $description = …, $default = …) → method Command.addArgument(string $name, ?int $mode = …, string $description = …, $default = …)
  • changed: method Command.addOption($name, $shortcut = …, $mode = …, $description = …, $default = …) → method Command.addOption(string $name, $shortcut = …, ?int $mode = …, string $description = …, $default = …)
  • changed: method Command.addUsage($usage) → method Command.addUsage(string $usage)
  • changed: method Command.getHelper($name) → method Command.getHelper(string $name)
  • changed: method Command.getSynopsis($short = …) → method Command.getSynopsis(bool $short = …)
  • changed: method Command.mergeApplicationDefinition($mergeArgs = …) → method Command.mergeApplicationDefinition(bool $mergeArgs = …)
  • changed: method Command.setAliases($aliases) → method Command.setAliases(iterable $aliases)
  • changed: method Command.setApplication(Application $application = …) → method Command.setApplication(?Application $application = …)
  • changed: method Command.setDescription($description) → method Command.setDescription(string $description)
  • changed: method Command.setHelp($help) → method Command.setHelp(string $help)
  • changed: method Command.setHidden($hidden) → method Command.setHidden(bool $hidden)
  • changed: method Command.setName($name) → method Command.setName(string $name)
  • changed: method Command.setProcessTitle($title) → method Command.setProcessTitle(string $title)
  • added: const Command.FAILURE
  • added: const Command.INVALID
  • added: const Command.SUCCESS
  • added: constructor CompleteCommand(array $completionOutputs = …)
  • added: constructor LazyCommand(string $name, array $aliases, string $description, bool $isHidden, \Closure $commandFactory, ?bool $isEnabled = …)
  • added: final class CompleteCommand extends Command
  • added: final class DumpCompletionCommand extends Command
  • added: final class LazyCommand extends Command
  • added: interface SignalableCommandInterface
  • added: method Command.complete(CompletionInput $input, CompletionSuggestions $suggestions): void
  • added: method DumpCompletionCommand.complete(CompletionInput $input, CompletionSuggestions $suggestions): void
  • added: method HelpCommand.complete(CompletionInput $input, CompletionSuggestions $suggestions): void
  • added: method LazyCommand.addArgument(string $name, ?int $mode = …, string $description = …, $default = …): self
  • added: method LazyCommand.addOption(string $name, $shortcut = …, ?int $mode = …, string $description = …, $default = …): self
  • added: method LazyCommand.addUsage(string $usage): self
  • added: method LazyCommand.complete(CompletionInput $input, CompletionSuggestions $suggestions): void
  • added: method LazyCommand.getCommand(): parent
  • added: method LazyCommand.getDefinition(): InputDefinition
  • added: method LazyCommand.getHelp(): string
  • added: method LazyCommand.getHelper(string $name)
  • added: method LazyCommand.getNativeDefinition(): InputDefinition
  • added: method LazyCommand.getProcessedHelp(): string
  • added: method LazyCommand.getSynopsis(bool $short = …): string
  • added: method LazyCommand.getUsages(): array
  • added: method LazyCommand.ignoreValidationErrors(): void
  • added: method LazyCommand.isEnabled(): bool
  • added: method LazyCommand.mergeApplicationDefinition(bool $mergeArgs = …): void
  • added: method LazyCommand.run(InputInterface $input, OutputInterface $output): int
  • added: method LazyCommand.setApplication(?Application $application = …): void
  • added: method LazyCommand.setCode(callable $code): self
  • added: method LazyCommand.setDefinition($definition): self
  • added: method LazyCommand.setHelp(string $help): self
  • added: method LazyCommand.setHelperSet(HelperSet $helperSet): void
  • added: method LazyCommand.setProcessTitle(string $title): self
  • added: method ListCommand.complete(CompletionInput $input, CompletionSuggestions $suggestions): void
  • added: method SignalableCommandInterface.getSubscribedSignals(): array
  • added: method SignalableCommandInterface.handleSignal(int $signal): void
  • added: protected method CompleteCommand.configure(): void
  • added: protected method CompleteCommand.execute(InputInterface $input, OutputInterface $output): int
  • added: protected method CompleteCommand.initialize(InputInterface $input, OutputInterface $output)
  • added: protected method DumpCompletionCommand.configure()
  • added: protected method DumpCompletionCommand.execute(InputInterface $input, OutputInterface $output): int
  • added: protected static property Command.defaultDescription
  • added: protected static property CompleteCommand.defaultDescription
  • added: protected static property CompleteCommand.defaultName
  • added: protected static property DumpCompletionCommand.defaultDescription
  • added: protected static property DumpCompletionCommand.defaultName
  • added: static method Command.getDefaultDescription(): ?string
  • changed: method CommandLoaderInterface.get($name) → method CommandLoaderInterface.get(string $name)
  • changed: method CommandLoaderInterface.has($name) → method CommandLoaderInterface.has(string $name)
  • changed: method ContainerCommandLoader.get($name) → method ContainerCommandLoader.get(string $name)
  • changed: method ContainerCommandLoader.has($name) → method ContainerCommandLoader.has(string $name)
  • changed: method FactoryCommandLoader.get($name) → method FactoryCommandLoader.get(string $name)
  • changed: method FactoryCommandLoader.has($name) → method FactoryCommandLoader.has(string $name)
  • added: class Suggestion
  • added: const CompletionInput.TYPE_ARGUMENT_VALUE
  • added: const CompletionInput.TYPE_NONE
  • added: const CompletionInput.TYPE_OPTION_NAME
  • added: const CompletionInput.TYPE_OPTION_VALUE
  • added: constructor Suggestion(string $value)
  • added: final class CompletionInput extends ArgvInput
  • added: final class CompletionSuggestions
  • added: method CompletionInput.__toString()
  • added: method CompletionInput.bind(InputDefinition $definition): void
  • added: method CompletionInput.getCompletionName(): ?string
  • added: method CompletionInput.getCompletionType(): string
  • added: method CompletionInput.getCompletionValue(): string
  • added: method CompletionInput.mustSuggestArgumentValuesFor(string $argumentName): bool
  • added: method CompletionInput.mustSuggestOptionValuesFor(string $optionName): bool
  • added: method CompletionSuggestions.getOptionSuggestions(): array
  • added: method CompletionSuggestions.getValueSuggestions(): array
  • added: method CompletionSuggestions.suggestOption(InputOption $option): self
  • added: method CompletionSuggestions.suggestOptions(array $options): self
  • added: method CompletionSuggestions.suggestValue($value): self
  • added: method CompletionSuggestions.suggestValues(array $values): self
  • added: method Suggestion.__toString(): string
  • added: method Suggestion.getValue(): string
  • added: protected method CompletionInput.parseToken(string $token, bool $parseOptions): bool
  • added: static method CompletionInput.fromString(string $inputStr, int $currentIndex): self
  • added: static method CompletionInput.fromTokens(array $tokens, int $currentIndex): self
  • added: class BashCompletionOutput implements CompletionOutputInterface
  • added: interface CompletionOutputInterface
  • added: method BashCompletionOutput.write(CompletionSuggestions $suggestions, OutputInterface $output): void
  • added: method CompletionOutputInterface.write(CompletionSuggestions $suggestions, OutputInterface $output): void
  • changed: constructor AddConsoleCommandPass(string $commandLoaderServiceId = …, string $commandTag = …) → constructor AddConsoleCommandPass(string $commandLoaderServiceId = …, string $commandTag = …, string $noPreloadTag = …, string $privateTagName = …)
  • changed: constructor ApplicationDescription(Application $application, string $namespace = …, bool $showHidden = …) → constructor ApplicationDescription(Application $application, ?string $namespace = …, bool $showHidden = …)
  • changed: method Descriptor.describe(OutputInterface $output, $object, array $options = …) → method Descriptor.describe(OutputInterface $output, object $object, array $options = …)
  • changed: method DescriptorInterface.describe(OutputInterface $output, $object, array $options = …) → method DescriptorInterface.describe(OutputInterface $output, object $object, array $options = …)
  • changed: method MarkdownDescriptor.describe(OutputInterface $output, $object, array $options = …) → method MarkdownDescriptor.describe(OutputInterface $output, object $object, array $options = …)
  • changed: method XmlDescriptor.getApplicationDocument(Application $application, string $namespace = …): \DOMDocument → method XmlDescriptor.getApplicationDocument(Application $application, ?string $namespace = …, bool $short = …): \DOMDocument
  • changed: method XmlDescriptor.getCommandDocument(Command $command): \DOMDocument → method XmlDescriptor.getCommandDocument(Command $command, bool $short = …): \DOMDocument
  • changed: protected method Descriptor.write($content, $decorated = …) → protected method Descriptor.write(string $content, bool $decorated = …)
  • changed: protected method MarkdownDescriptor.write($content, $decorated = …) → protected method MarkdownDescriptor.write(string $content, bool $decorated = …)
  • changed: class ConsoleCommandEvent extends ConsoleEvent → final class ConsoleCommandEvent extends ConsoleEvent
  • changed: class ConsoleTerminateEvent extends ConsoleEvent → final class ConsoleTerminateEvent extends ConsoleEvent
  • changed: constructor ConsoleErrorEvent(InputInterface $input, OutputInterface $output, \Throwable $error, Command $command = …) → constructor ConsoleErrorEvent(InputInterface $input, OutputInterface $output, \Throwable $error, ?Command $command = …)
  • changed: method ConsoleCommandEvent.commandShouldRun() → method ConsoleCommandEvent.commandShouldRun(): bool
  • changed: method ConsoleCommandEvent.disableCommand() → method ConsoleCommandEvent.disableCommand(): bool
  • changed: method ConsoleCommandEvent.enableCommand() → method ConsoleCommandEvent.enableCommand(): bool
  • changed: method ConsoleTerminateEvent.getExitCode() → method ConsoleTerminateEvent.getExitCode(): int
  • changed: method ConsoleTerminateEvent.setExitCode($exitCode) → method ConsoleTerminateEvent.setExitCode(int $exitCode): void
  • added: constructor ConsoleSignalEvent(Command $command, InputInterface $input, OutputInterface $output, int $handlingSignal)
  • added: final class ConsoleSignalEvent extends ConsoleEvent
  • added: method ConsoleSignalEvent.getHandlingSignal(): int
  • changed: constructor ErrorListener(LoggerInterface $logger = …) → constructor ErrorListener(?LoggerInterface $logger = …)
  • changed: constructor CommandNotFoundException(string $message, array $alternatives = …, int $code = …, \Throwable $previous = …) → constructor CommandNotFoundException(string $message, array $alternatives = …, int $code = …, ?\Throwable $previous = …)
  • changed: constructor OutputFormatterStyle(string $foreground = …, string $background = …, array $options = …) → constructor OutputFormatterStyle(?string $foreground = …, ?string $background = …, array $options = …)
  • changed: constructor OutputFormatterStyleStack(OutputFormatterStyleInterface $emptyStyle = …) → constructor OutputFormatterStyleStack(?OutputFormatterStyleInterface $emptyStyle = …)
  • changed: method OutputFormatter.format($message) → method OutputFormatter.format(?string $message)
  • changed: method OutputFormatter.formatAndWrap(string $message, int $width) → method OutputFormatter.formatAndWrap(?string $message, int $width)
  • changed: method OutputFormatter.getStyle($name) → method OutputFormatter.getStyle(string $name)
  • changed: method OutputFormatter.hasStyle($name) → method OutputFormatter.hasStyle(string $name)
  • changed: method OutputFormatter.setDecorated($decorated) → method OutputFormatter.setDecorated(bool $decorated)
  • changed: method OutputFormatter.setStyle($name, OutputFormatterStyleInterface $style) → method OutputFormatter.setStyle(string $name, OutputFormatterStyleInterface $style)
  • changed: method OutputFormatterInterface.format($message) → method OutputFormatterInterface.format(?string $message)
  • changed: method OutputFormatterInterface.getStyle($name) → method OutputFormatterInterface.getStyle(string $name)
  • changed: method OutputFormatterInterface.hasStyle($name) → method OutputFormatterInterface.hasStyle(string $name)
  • changed: method OutputFormatterInterface.setDecorated($decorated) → method OutputFormatterInterface.setDecorated(bool $decorated)
  • changed: method OutputFormatterInterface.setStyle($name, OutputFormatterStyleInterface $style) → method OutputFormatterInterface.setStyle(string $name, OutputFormatterStyleInterface $style)
  • changed: method OutputFormatterStyle.apply($text) → method OutputFormatterStyle.apply(string $text)
  • changed: method OutputFormatterStyle.setBackground($color = …) → method OutputFormatterStyle.setBackground(?string $color = …)
  • changed: method OutputFormatterStyle.setForeground($color = …) → method OutputFormatterStyle.setForeground(?string $color = …)
  • changed: method OutputFormatterStyle.setOption($option) → method OutputFormatterStyle.setOption(string $option)
  • changed: method OutputFormatterStyle.unsetOption($option) → method OutputFormatterStyle.unsetOption(string $option)
  • changed: method OutputFormatterStyleInterface.apply($text) → method OutputFormatterStyleInterface.apply(string $text)
  • changed: method OutputFormatterStyleInterface.setBackground($color = …) → method OutputFormatterStyleInterface.setBackground(?string $color = …)
  • changed: method OutputFormatterStyleInterface.setForeground($color = …) → method OutputFormatterStyleInterface.setForeground(?string $color = …)
  • changed: method OutputFormatterStyleInterface.setOption($option) → method OutputFormatterStyleInterface.setOption(string $option)
  • changed: method OutputFormatterStyleInterface.unsetOption($option) → method OutputFormatterStyleInterface.unsetOption(string $option)
  • changed: method OutputFormatterStyleStack.pop(OutputFormatterStyleInterface $style = …) → method OutputFormatterStyleStack.pop(?OutputFormatterStyleInterface $style = …)
  • changed: method WrappableOutputFormatterInterface.formatAndWrap(string $message, int $width) → method WrappableOutputFormatterInterface.formatAndWrap(?string $message, int $width)
  • changed: static method OutputFormatter.escape($text) → static method OutputFormatter.escape(string $text)
  • added: final class NullOutputFormatter implements OutputFormatterInterface
  • added: final class NullOutputFormatterStyle implements OutputFormatterStyleInterface
  • added: method NullOutputFormatter.format(?string $message): ?string
  • added: method NullOutputFormatter.getStyle(string $name): OutputFormatterStyleInterface
  • added: method NullOutputFormatter.hasStyle(string $name): bool
  • added: method NullOutputFormatter.isDecorated(): bool
  • added: method NullOutputFormatter.setDecorated(bool $decorated): void
  • added: method NullOutputFormatter.setStyle(string $name, OutputFormatterStyleInterface $style): void
  • added: method NullOutputFormatterStyle.apply(string $text): string
  • added: method NullOutputFormatterStyle.setBackground(?string $color = …): void
  • added: method NullOutputFormatterStyle.setForeground(?string $color = …): void
  • added: method NullOutputFormatterStyle.setOption(string $option): void
  • added: method NullOutputFormatterStyle.setOptions(array $options): void
  • added: method NullOutputFormatterStyle.unsetOption(string $option): void
  • removed: method TableStyle.getHorizontalBorderChar()
  • removed: method TableStyle.getVerticalBorderChar()
  • removed: method TableStyle.setCrossingChar($crossingChar)
  • removed: method TableStyle.setHorizontalBorderChar($horizontalBorderChar)
  • removed: method TableStyle.setVerticalBorderChar($verticalBorderChar)
  • changed: constructor Dumper(OutputInterface $output, CliDumper $dumper = …, ClonerInterface $cloner = …) → constructor Dumper(OutputInterface $output, ?CliDumper $dumper = …, ?ClonerInterface $cloner = …)
  • changed: constructor ProgressIndicator(OutputInterface $output, string $format = …, int $indicatorChangeInterval = …, array $indicatorValues = …) → constructor ProgressIndicator(OutputInterface $output, ?string $format = …, int $indicatorChangeInterval = …, ?array $indicatorValues = …)
  • changed: constructor TableRows(callable $generator) → constructor TableRows(\Closure $generator)
  • changed: method DebugFormatterHelper.progress($id, $buffer, $error = …, $prefix = …, $errorPrefix = …) → method DebugFormatterHelper.progress(string $id, string $buffer, bool $error = …, string $prefix = …, string $errorPrefix = …)
  • changed: method DebugFormatterHelper.start($id, $message, $prefix = …) → method DebugFormatterHelper.start(string $id, string $message, string $prefix = …)
  • changed: method DebugFormatterHelper.stop($id, $message, $successful, $prefix = …) → method DebugFormatterHelper.stop(string $id, string $message, bool $successful, string $prefix = …)
  • changed: method DescriptorHelper.describe(OutputInterface $output, $object, array $options = …) → method DescriptorHelper.describe(OutputInterface $output, ?object $object, array $options = …)
  • changed: method DescriptorHelper.register($format, DescriptorInterface $descriptor) → method DescriptorHelper.register(string $format, DescriptorInterface $descriptor)
  • changed: method FormatterHelper.formatBlock($messages, $style, $large = …) → method FormatterHelper.formatBlock($messages, string $style, bool $large = …)
  • changed: method FormatterHelper.formatSection($section, $message, $style = …) → method FormatterHelper.formatSection(string $section, string $message, string $style = …)
  • changed: method FormatterHelper.truncate($message, $length, $suffix = …) → method FormatterHelper.truncate(string $message, int $length, string $suffix = …)
  • changed: method Helper.setHelperSet(HelperSet $helperSet = …) → method Helper.setHelperSet(?HelperSet $helperSet = …)
  • changed: method HelperInterface.setHelperSet(HelperSet $helperSet = …) → method HelperInterface.setHelperSet(?HelperSet $helperSet = …)
  • changed: method HelperSet.get($name) → method HelperSet.get(string $name)
  • changed: method HelperSet.has($name) → method HelperSet.has(string $name)
  • changed: method HelperSet.set(HelperInterface $helper, $alias = …) → method HelperSet.set(HelperInterface $helper, ?string $alias = …)
  • changed: method HelperSet.setCommand(Command $command = …) → method HelperSet.setCommand(?Command $command = …)
  • changed: method ProcessHelper.getName() → method ProcessHelper.getName(): string
  • changed: method ProcessHelper.mustRun(OutputInterface $output, $cmd, $error = …, callable $callback = …) → method ProcessHelper.mustRun(OutputInterface $output, $cmd, ?string $error = …, ?callable $callback = …): Process
  • changed: method ProcessHelper.run(OutputInterface $output, $cmd, $error = …, callable $callback = …, $verbosity = …) → method ProcessHelper.run(OutputInterface $output, $cmd, ?string $error = …, ?callable $callback = …, int $verbosity = …): Process
  • changed: method ProcessHelper.wrapCallback(OutputInterface $output, Process $process, callable $callback = …) → method ProcessHelper.wrapCallback(OutputInterface $output, Process $process, ?callable $callback = …): callable
  • changed: method ProgressBar.getBarOffset(): int → method ProgressBar.getBarOffset(): float
  • changed: method ProgressBar.iterate(iterable $iterable, int $max = …): iterable → method ProgressBar.iterate(iterable $iterable, ?int $max = …): iterable
  • changed: method ProgressBar.start(int $max = …) → method ProgressBar.start(?int $max = …)
  • changed: method ProgressIndicator.finish($message) → method ProgressIndicator.finish(string $message)
  • changed: method ProgressIndicator.setMessage($message) → method ProgressIndicator.setMessage(?string $message)
  • changed: method ProgressIndicator.start($message) → method ProgressIndicator.start(string $message)
  • changed: method Table.getColumnStyle($columnIndex) → method Table.getColumnStyle(int $columnIndex)
  • changed: method Table.setColumnStyle($columnIndex, $name) → method Table.setColumnStyle(int $columnIndex, $name)
  • changed: method Table.setColumnWidth($columnIndex, $width) → method Table.setColumnWidth(int $columnIndex, int $width)
  • changed: method TableStyle.setBorderFormat($borderFormat) → method TableStyle.setBorderFormat(string $borderFormat)
  • changed: method TableStyle.setCellHeaderFormat($cellHeaderFormat) → method TableStyle.setCellHeaderFormat(string $cellHeaderFormat)
  • changed: method TableStyle.setCellRowContentFormat($cellRowContentFormat) → method TableStyle.setCellRowContentFormat(string $cellRowContentFormat)
  • changed: method TableStyle.setCellRowFormat($cellRowFormat) → method TableStyle.setCellRowFormat(string $cellRowFormat)
  • changed: method TableStyle.setCrossingChars(string $cross, string $topLeft, string $topMid, string $topRight, string $midRight, string $bottomRight, string $bottomMid, string $bottomLeft, string $midLeft, string $topLeftBottom = …, string $topMidBottom = …, string $topRightBottom = …): self → method TableStyle.setCrossingChars(string $cross, string $topLeft, string $topMid, string $topRight, string $midRight, string $bottomRight, string $bottomMid, string $bottomLeft, string $midLeft, ?string $topLeftBottom = …, ?string $topMidBottom = …, ?string $topRightBottom = …): self
  • changed: method TableStyle.setHorizontalBorderChars(string $outside, string $inside = …): self → method TableStyle.setHorizontalBorderChars(string $outside, ?string $inside = …): self
  • changed: method TableStyle.setPadType($padType) → method TableStyle.setPadType(int $padType)
  • changed: method TableStyle.setPaddingChar($paddingChar) → method TableStyle.setPaddingChar(string $paddingChar)
  • changed: method TableStyle.setVerticalBorderChars(string $outside, string $inside = …): self → method TableStyle.setVerticalBorderChars(string $outside, ?string $inside = …): self
  • changed: protected method QuestionHelper.formatChoiceQuestionChoices(ChoiceQuestion $question, $tag) → protected method QuestionHelper.formatChoiceQuestionChoices(ChoiceQuestion $question, string $tag)
  • changed: static method Helper.formatMemory($memory) → static method Helper.formatMemory(int $memory)
  • changed: static method Helper.removeDecoration(OutputFormatterInterface $formatter, $string) → static method Helper.removeDecoration(OutputFormatterInterface $formatter, ?string $string)
  • changed: static method Helper.strlen($string) → static method Helper.strlen(?string $string)
  • changed: static method Helper.strlenWithoutDecoration(OutputFormatterInterface $formatter, $string) → static method Helper.strlenWithoutDecoration(OutputFormatterInterface $formatter, ?string $string)
  • changed: static method Helper.substr($string, $from, $length = …) → static method Helper.substr(?string $string, int $from, ?int $length = …)
  • changed: static method ProgressIndicator.getFormatDefinition($name) → static method ProgressIndicator.getFormatDefinition(string $name)
  • changed: static method ProgressIndicator.getPlaceholderFormatterDefinition($name) → static method ProgressIndicator.getPlaceholderFormatterDefinition(string $name)
  • changed: static method ProgressIndicator.setPlaceholderFormatterDefinition($name, $callable) → static method ProgressIndicator.setPlaceholderFormatterDefinition(string $name, callable $callable)
  • changed: static method Table.getStyleDefinition($name) → static method Table.getStyleDefinition(string $name)
  • changed: static method Table.setStyleDefinition($name, TableStyle $style) → static method Table.setStyleDefinition(string $name, TableStyle $style)
  • added: class TableCellStyle
  • added: const ProgressBar.FORMAT_DEBUG
  • added: const ProgressBar.FORMAT_NORMAL
  • added: const ProgressBar.FORMAT_VERBOSE
  • added: const ProgressBar.FORMAT_VERY_VERBOSE
  • added: const TableCellStyle.DEFAULT_ALIGN
  • added: constructor TableCellStyle(array $options = …)
  • added: method DescriptorHelper.getFormats(): array
  • added: method ProgressBar.getEstimated(): float
  • added: method ProgressBar.getRemaining(): float
  • added: method TableCell.getStyle(): ?TableCellStyle
  • added: method TableCellStyle.getCellFormat(): ?string
  • added: method TableCellStyle.getOptions(): array
  • added: method TableCellStyle.getPadByAlign()
  • added: method TableCellStyle.getTagOptions()
  • added: static method Helper.length(?string $string): int
  • added: static method Helper.width(?string $string): int
  • changed: constructor ArgvInput(array $argv = …, InputDefinition $definition = …) → constructor ArgvInput(?array $argv = …, ?InputDefinition $definition = …)
  • changed: constructor ArrayInput(array $parameters, InputDefinition $definition = …) → constructor ArrayInput(array $parameters, ?InputDefinition $definition = …)
  • changed: constructor Input(InputDefinition $definition = …) → constructor Input(?InputDefinition $definition = …)
  • changed: constructor InputArgument(string $name, int $mode = …, string $description = …, $default = …) → constructor InputArgument(string $name, ?int $mode = …, string $description = …, $default = …)
  • changed: constructor InputOption(string $name, $shortcut = …, int $mode = …, string $description = …, $default = …) → constructor InputOption(string $name, $shortcut = …, ?int $mode = …, string $description = …, $default = …)
  • changed: method ArgvInput.getParameterOption($values, $default = …, $onlyParams = …) → method ArgvInput.getParameterOption($values, $default = …, bool $onlyParams = …)
  • changed: method ArgvInput.hasParameterOption($values, $onlyParams = …) → method ArgvInput.hasParameterOption($values, bool $onlyParams = …)
  • changed: method ArrayInput.getParameterOption($values, $default = …, $onlyParams = …) → method ArrayInput.getParameterOption($values, $default = …, bool $onlyParams = …)
  • changed: method ArrayInput.hasParameterOption($values, $onlyParams = …) → method ArrayInput.hasParameterOption($values, bool $onlyParams = …)
  • changed: method Input.escapeToken($token) → method Input.escapeToken(string $token)
  • changed: method Input.getArgument($name) → method Input.getArgument(string $name)
  • changed: method Input.getOption($name) → method Input.getOption(string $name)
  • changed: method Input.hasArgument($name) → method Input.hasArgument(string $name)
  • changed: method Input.hasOption($name) → method Input.hasOption(string $name)
  • changed: method Input.setArgument($name, $value) → method Input.setArgument(string $name, $value)
  • changed: method Input.setInteractive($interactive) → method Input.setInteractive(bool $interactive)
  • changed: method Input.setOption($name, $value) → method Input.setOption(string $name, $value)
  • changed: method InputDefinition.addArguments($arguments = …) → method InputDefinition.addArguments(?array $arguments = …)
  • changed: method InputDefinition.addOptions($options = …) → method InputDefinition.addOptions(array $options = …)
  • changed: method InputDefinition.getOption($name) → method InputDefinition.getOption(string $name)
  • changed: method InputDefinition.getOptionForShortcut($shortcut) → method InputDefinition.getOptionForShortcut(string $shortcut)
  • changed: method InputDefinition.getSynopsis($short = …) → method InputDefinition.getSynopsis(bool $short = …)
  • changed: method InputDefinition.hasOption($name) → method InputDefinition.hasOption(string $name)
  • changed: method InputDefinition.hasShortcut($name) → method InputDefinition.hasShortcut(string $name)
  • changed: method InputDefinition.setArguments($arguments = …) → method InputDefinition.setArguments(array $arguments = …)
  • changed: method InputDefinition.setOptions($options = …) → method InputDefinition.setOptions(array $options = …)
  • changed: method InputInterface.getArgument($name) → method InputInterface.getArgument(string $name)
  • changed: method InputInterface.getOption($name) → method InputInterface.getOption(string $name)
  • changed: method InputInterface.getParameterOption($values, $default = …, $onlyParams = …) → method InputInterface.getParameterOption($values, $default = …, bool $onlyParams = …)
  • changed: method InputInterface.hasArgument($name) → method InputInterface.hasArgument(string $name)
  • changed: method InputInterface.hasOption($name) → method InputInterface.hasOption(string $name)
  • changed: method InputInterface.hasParameterOption($values, $onlyParams = …) → method InputInterface.hasParameterOption($values, bool $onlyParams = …)
  • changed: method InputInterface.setArgument($name, $value) → method InputInterface.setArgument(string $name, $value)
  • changed: method InputInterface.setInteractive($interactive) → method InputInterface.setInteractive(bool $interactive)
  • changed: method InputInterface.setOption($name, $value) → method InputInterface.setOption(string $name, $value)
  • added: const InputOption.VALUE_NEGATABLE
  • added: method InputDefinition.hasNegation(string $name): bool
  • added: method InputDefinition.negationToName(string $negation): string
  • added: method InputOption.isNegatable(): bool
  • added: protected method ArgvInput.parseToken(string $token, bool $parseOptions): bool
  • changed: constructor ConsoleOutput(int $verbosity = …, bool $decorated = …, OutputFormatterInterface $formatter = …) → constructor ConsoleOutput(int $verbosity = …, ?bool $decorated = …, ?OutputFormatterInterface $formatter = …)
  • changed: constructor Output(?int $verbosity = …, bool $decorated = …, OutputFormatterInterface $formatter = …) → constructor Output(?int $verbosity = …, bool $decorated = …, ?OutputFormatterInterface $formatter = …)
  • changed: constructor StreamOutput($stream, int $verbosity = …, bool $decorated = …, OutputFormatterInterface $formatter = …) → constructor StreamOutput($stream, int $verbosity = …, ?bool $decorated = …, ?OutputFormatterInterface $formatter = …)
  • changed: constructor TrimmedBufferOutput(int $maxLength, ?int $verbosity = …, bool $decorated = …, OutputFormatterInterface $formatter = …) → constructor TrimmedBufferOutput(int $maxLength, ?int $verbosity = …, bool $decorated = …, ?OutputFormatterInterface $formatter = …)
  • changed: method ConsoleOutput.setDecorated($decorated) → method ConsoleOutput.setDecorated(bool $decorated)
  • changed: method ConsoleOutput.setVerbosity($level) → method ConsoleOutput.setVerbosity(int $level)
  • changed: method ConsoleSectionOutput.clear(int $lines = …) → method ConsoleSectionOutput.clear(?int $lines = …)
  • changed: method NullOutput.setDecorated($decorated) → method NullOutput.setDecorated(bool $decorated)
  • changed: method NullOutput.setVerbosity($level) → method NullOutput.setVerbosity(int $level)
  • changed: method NullOutput.write($messages, $newline = …, $options = …) → method NullOutput.write($messages, bool $newline = …, int $options = …)
  • changed: method NullOutput.writeln($messages, $options = …) → method NullOutput.writeln($messages, int $options = …)
  • changed: method Output.setDecorated($decorated) → method Output.setDecorated(bool $decorated)
  • changed: method Output.setVerbosity($level) → method Output.setVerbosity(int $level)
  • changed: method Output.write($messages, $newline = …, $options = …) → method Output.write($messages, bool $newline = …, int $options = …)
  • changed: method Output.writeln($messages, $options = …) → method Output.writeln($messages, int $options = …)
  • changed: method OutputInterface.setDecorated($decorated) → method OutputInterface.setDecorated(bool $decorated)
  • changed: method OutputInterface.setVerbosity($level) → method OutputInterface.setVerbosity(int $level)
  • changed: method OutputInterface.write($messages, $newline = …, $options = …) → method OutputInterface.write($messages, bool $newline = …, int $options = …)
  • changed: method OutputInterface.writeln($messages, $options = …) → method OutputInterface.writeln($messages, int $options = …)
  • changed: protected method BufferedOutput.doWrite($message, $newline) → protected method BufferedOutput.doWrite(string $message, bool $newline)
  • changed: protected method ConsoleSectionOutput.doWrite($message, $newline) → protected method ConsoleSectionOutput.doWrite(string $message, bool $newline)
  • changed: protected method Output.doWrite($message, $newline) → protected method Output.doWrite(string $message, bool $newline)
  • changed: protected method StreamOutput.doWrite($message, $newline) → protected method StreamOutput.doWrite(string $message, bool $newline)
  • changed: protected method TrimmedBufferOutput.doWrite($message, $newline) → protected method TrimmedBufferOutput.doWrite(string $message, bool $newline)
  • added: method ConsoleOutputInterface.section(): ConsoleSectionOutput
  • changed: method ChoiceQuestion.setErrorMessage($errorMessage) → method ChoiceQuestion.setErrorMessage(string $errorMessage)
  • changed: method ChoiceQuestion.setMultiselect($multiselect) → method ChoiceQuestion.setMultiselect(bool $multiselect)
  • changed: method ChoiceQuestion.setPrompt($prompt) → method ChoiceQuestion.setPrompt(string $prompt)
  • changed: method Question.setAutocompleterCallback(callable $callback = …): self → method Question.setAutocompleterCallback(?callable $callback = …): self
  • changed: method Question.setAutocompleterValues($values) → method Question.setAutocompleterValues(?iterable $values)
  • changed: method Question.setHidden($hidden) → method Question.setHidden(bool $hidden)
  • changed: method Question.setHiddenFallback($fallback) → method Question.setHiddenFallback(bool $fallback)
  • changed: method Question.setMaxAttempts($attempts) → method Question.setMaxAttempts(?int $attempts)
  • changed: method Question.setValidator(callable $validator = …) → method Question.setValidator(?callable $validator = …)
  • changed: protected method Question.isAssoc($array) → protected method Question.isAssoc(array $array)
  • added: method Question.isMultiline(): bool
  • added: method Question.setMultiline(bool $multiline): self
  • added: constructor SignalRegistry()
  • added: final class SignalRegistry
  • added: method SignalRegistry.handle(int $signal): void
  • added: method SignalRegistry.register(int $signal, callable $signalHandler): void
  • added: static method SignalRegistry.isSupported(): bool
  • changed: method OutputStyle.createProgressBar($max = …) → method OutputStyle.createProgressBar(int $max = …)
  • changed: method OutputStyle.newLine($count = …) → method OutputStyle.newLine(int $count = …)
  • changed: method OutputStyle.setDecorated($decorated) → method OutputStyle.setDecorated(bool $decorated)
  • changed: method OutputStyle.setVerbosity($level) → method OutputStyle.setVerbosity(int $level)
  • changed: method OutputStyle.write($messages, $newline = …, $type = …) → method OutputStyle.write($messages, bool $newline = …, int $type = …)
  • changed: method OutputStyle.writeln($messages, $type = …) → method OutputStyle.writeln($messages, int $type = …)
  • changed: method StyleInterface.ask($question, $default = …, $validator = …) → method StyleInterface.ask(string $question, ?string $default = …, ?callable $validator = …)
  • changed: method StyleInterface.askHidden($question, $validator = …) → method StyleInterface.askHidden(string $question, ?callable $validator = …)
  • changed: method StyleInterface.choice($question, array $choices, $default = …) → method StyleInterface.choice(string $question, array $choices, $default = …)
  • changed: method StyleInterface.confirm($question, $default = …) → method StyleInterface.confirm(string $question, bool $default = …)
  • changed: method StyleInterface.newLine($count = …) → method StyleInterface.newLine(int $count = …)
  • changed: method StyleInterface.progressAdvance($step = …) → method StyleInterface.progressAdvance(int $step = …)
  • changed: method StyleInterface.progressStart($max = …) → method StyleInterface.progressStart(int $max = …)
  • changed: method StyleInterface.section($message) → method StyleInterface.section(string $message)
  • changed: method StyleInterface.title($message) → method StyleInterface.title(string $message)
  • changed: method SymfonyStyle.ask($question, $default = …, $validator = …) → method SymfonyStyle.ask(string $question, ?string $default = …, ?callable $validator = …)
  • changed: method SymfonyStyle.askHidden($question, $validator = …) → method SymfonyStyle.askHidden(string $question, ?callable $validator = …)
  • changed: method SymfonyStyle.block($messages, $type = …, $style = …, $prefix = …, $padding = …, $escape = …) → method SymfonyStyle.block($messages, ?string $type = …, ?string $style = …, string $prefix = …, bool $padding = …, bool $escape = …)
  • changed: method SymfonyStyle.choice($question, array $choices, $default = …) → method SymfonyStyle.choice(string $question, array $choices, $default = …)
  • changed: method SymfonyStyle.confirm($question, $default = …) → method SymfonyStyle.confirm(string $question, bool $default = …)
  • changed: method SymfonyStyle.createProgressBar($max = …) → method SymfonyStyle.createProgressBar(int $max = …)
  • changed: method SymfonyStyle.newLine($count = …) → method SymfonyStyle.newLine(int $count = …)
  • changed: method SymfonyStyle.progressAdvance($step = …) → method SymfonyStyle.progressAdvance(int $step = …)
  • changed: method SymfonyStyle.progressStart($max = …) → method SymfonyStyle.progressStart(int $max = …)
  • changed: method SymfonyStyle.section($message) → method SymfonyStyle.section(string $message)
  • changed: method SymfonyStyle.title($message) → method SymfonyStyle.title(string $message)
  • changed: method SymfonyStyle.write($messages, $newline = …, $type = …) → method SymfonyStyle.write($messages, bool $newline = …, int $type = …)
  • changed: method SymfonyStyle.writeln($messages, $type = …) → method SymfonyStyle.writeln($messages, int $type = …)
  • added: method SymfonyStyle.createTable(): Table
  • added: method SymfonyStyle.info($message)
  • added: method SymfonyStyle.progressIterate(iterable $iterable, ?int $max = …): iterable
  • changed: method ApplicationTester.run(array $input, $options = …) → method ApplicationTester.run(array $input, array $options = …)
  • changed: method TesterTrait.getDisplay($normalize = …) → method TesterTrait.getDisplay(bool $normalize = …)
  • changed: method TesterTrait.getErrorOutput($normalize = …) → method TesterTrait.getErrorOutput(bool $normalize = …)
  • added: class CommandCompletionTester
  • added: constructor CommandCompletionTester(Command $command)
  • added: method CommandCompletionTester.complete(array $input): array
  • added: method TesterTrait.assertCommandIsSuccessful(string $message = …): void
  • added: final class CommandIsSuccessful extends Constraint
  • added: method CommandIsSuccessful.toString(): string
  • added: protected method CommandIsSuccessful.additionalFailureDescription($other): string
  • added: protected method CommandIsSuccessful.failureDescription($other): string
  • added: protected method CommandIsSuccessful.matches($other): bool