The ability to define default values for method arguments can make a method easier to use. Default argument values allow callers to specify as many
or as few arguments as they want while getting the same functionality and minimizing boilerplate, wrapper code.
But all method arguments with default values should be declared after the method arguments without default values. Otherwise, it makes it
impossible for callers to take advantage of defaults; they must re-specify the defaulted values in order to "get to" the non-default arguments.
Noncompliant code example
function makeyogurt($type = "acidophilus", $flavor){...} // Noncompliant
makeyogurt("raspberry")}} // Runtime error: Missing argument 2 in call to makeyogurt()
Compliant solution
function makeyogurt($flavor, $type = "acidophilus", ){...}
makeyogurt("raspberry")}} // Works as expected