Skip to content

mattwellss/named-params

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

"Named Params"

Not really named params in calls, but allows for fluent, readable calls on both functions and methods.

Examples

In the following example, we create a named param object for password_hash. It's not a function with particularly confusing arguments, but some use can still be wrung from minimizing the required arguments.

// Create an object representing the function to be called
$password_hash = new Mpw\NamedParamFunctionCall('password_hash');

// fill in the arguments
$password_hash
    ->withArg('password', 'CorrectHorseBatteryStaple')
    ->withArg('algo', PASSWORD_DEFAULT)
    ->withArg('options', [])
    ->__invoke();

// Each `withArg` call returns a *new instance*
// meaning that fun stuff like this can be done:

$password_hash_default = $password_hash->withArg('algo', PASSWORD_DEFAULT);

$password1 = $password_hash_default('my password');
$password2 = $password_hash_default('your password');

Using these objects as dependencies in a class can be a much more lightweight approach than building an entire class that requires testing!

class UserRegistrar
{
    /**
     * @var callable
     */
    private $pwd_hasher;

    /**
     * @param callable $pwd_hasher
     */
    public function __construct(callable $pwd_hasher)
    {
        $this->pwd_hasher = $pwd_hasher;
    }

    public function registerUser($username, $password)
    {
        $hashed_password = $this->pwd_hasher($password);
    }
}

This is quite handy, as the $pwd_hasher property can be stubbed to create deterministic test results

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages