for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Roave\BackwardCompatibility\DetectChanges\BCBreak\FunctionBased;
use Roave\BackwardCompatibility\Change;
use Roave\BackwardCompatibility\Changes;
use Roave\BackwardCompatibility\Formatter\ReflectionFunctionAbstractName;
use Roave\BetterReflection\Reflection\ReflectionFunctionAbstract;
use function Safe\sprintf;
/**
* When new parameters are added, they must be optional, or else the callers will provide an insufficient
* amount of parameters to the function.
*/
final class RequiredParameterAmountIncreased implements FunctionBased
{
/** @var ReflectionFunctionAbstractName */
private $formatFunction;
public function __construct()
$this->formatFunction = new ReflectionFunctionAbstractName();
}
public function __invoke(ReflectionFunctionAbstract $fromFunction, ReflectionFunctionAbstract $toFunction) : Changes
$fromRequiredParameters = $fromFunction->getNumberOfRequiredParameters();
$toRequiredParameters = $toFunction->getNumberOfRequiredParameters();
if ($fromRequiredParameters >= $toRequiredParameters) {
return Changes::empty();
return Changes::fromList(Change::changed(
sprintf(
'The number of required arguments for %s increased from %d to %d',
$this->formatFunction->__invoke($fromFunction),
$fromRequiredParameters,
$toRequiredParameters
),
true
));