Download the PHP package marco-fiset/flute without Composer
On this page you can find all versions of the php package marco-fiset/flute. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download marco-fiset/flute
More information about marco-fiset/flute
Files in marco-fiset/flute
Package flute
Short Description Highly extensible validation framework for PHP
License DBAD
Homepage http://github.com/marco-fiset/flute
Informations about the package flute
Flute
An utterly awesome and easy-to-use, lightweight and highly-extensible fluent validation framework for PHP.
Flute's fluent interface is heavily inspired by FluentValidation for .NET.
Here is a simple example to get you started :
These validation rules are supported out of the box :
- NotNull
- NotEmpty
- Required
- MaxLength
- ... (and many more. You can also add rules yourself)
Creating custom validation rules
It's very easy to create custom rules, and you don't even have to alter the Validator
class. Everything is done with magic naming conventions! For example, here is how the NotEmpty rule is built :
Once your rule is defined, it must be discoverable by any registered auto-loader in order the make it available to the Validator
class. Here is how you invoke it :
See what I did there? No need to add the not_empty()
function to the validator. Any unknown function invoked on a validator will create a rule named with the following conventions :
- Every word delimited by underscores is capitalized.
- The underscores are removed.
- 'Rule' is appended to the resulting string.
So not_empty
becomes NotEmptyRule
. The validator will instantiate a NotEmptyRule
class and associate it with the property name defined when we called rule_for
. Easy, huh?
What if I want to use parameters?
Very simple. Here is a brief look at the MaxLengthRule
implementation.
Any parameters passed to the function definition will be registered in the args
array in the same order that they were passed to the validator rule. You can also access args with the magic __get
method, like I did here with max_length
. I you were to call max_length
again, it will send back the same value as the first time it was called. When using multiple arguments, they are handed out in the order they were passed, and each name gets its own argument.
Extending existing rules
Your custom rule can extend the behaviour of existing rules. Let's take a look at the RequiredRule
implementation :
As you can see, the RequiredRule
is only a combination of the NotNullRule
and the NotEmptyRule
. The extend
function returns an array of instantiated rules which you want to extend. The condition
function will be called on both rules and combined with a logical and
. That is, if any of the condition fails, it is considered invalid.
That's it for the moment! Stay tuned for more awesome features!