PHP code example of vertilia / valid-array
1. Go to this page and download the library: Download vertilia/valid-array library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
vertilia / valid-array example snippets
// router.php
// create controller
$controller = new ApiLoginController();
// validate request vars
$controller->withRequestVars();
// run controller with valid parameters
$controller->run();
// ApiLoginController.php
class ApiLoginController implements Runnable
{
protected array $vars = [];
public function withRequestVars(): self
{
// TODO validate request variables
$this->vars = []; // <- we need to implement this
return $this;
}
public function run()
{
// TODO redirect to $uri or output error...
}
}
// validate request variables
$this->vars = filter_input_array(
INPUT_POST,
[
'email' => FILTER_VALIDATE_EMAIL,
'password' => [
'filter' => FILTER_CALLBACK,
'options' => function ($pwd) {
return (strlen($pwd) >= 8) ? password_hash($pwd, PASSWORD_BCRYPT) : false;
},
],
'uri' => [
'filter' => FILTER_DEFAULT,
'options' => ['default' => '#member'], // <- will not work
],
]
) ?: [];
// validate request variables
$this->vars = filter_input_array(
INPUT_POST,
[
'email' => [
'filter' => FILTER_VALIDATE_EMAIL,
'flags' => FILTER_REQUIRE_SCALAR,
],
'password' => [
'filter' => FILTER_CALLBACK,
'flags' => FILTER_REQUIRE_SCALAR, // <- will not work
'options' => function ($pwd) {
return (strlen($pwd) >= 8) ? password_hash($pwd, PASSWORD_BCRYPT) : false;
},
],
'uri' => [
'filter' => FILTER_DEFAULT,
'flags' => FILTER_REQUIRE_SCALAR,
'options' => ['default' => '#member'], // <- will not work
],
]
) ?: [];
// validate request variables
$post = $_POST;
if (is_array($post['password'] ?? null)) {
$post['password'] = false;
}
if (empty($post['uri'])) {
$post['uri'] = '#member';
}
$vars = filter_var_array(
$post,
[
'email' => [
'filter' => FILTER_VALIDATE_EMAIL,
'flags' => FILTER_REQUIRE_SCALAR,
],
'password' => [
'filter' => FILTER_CALLBACK,
'options' => function ($pwd) {
return (strlen($pwd) >= 8) ? password_hash($pwd, PASSWORD_BCRYPT) : false;
},
],
'uri' => [
'filter' => FILTER_DEFAULT,
'flags' => FILTER_REQUIRE_SCALAR,
],
]
) ?: [];
use Vertilia\ValidArray;
// validate request variables
$this->vars = new ValidArray(
[
'email' => [
'filter' => FILTER_VALIDATE_EMAIL,
'flags' => FILTER_REQUIRE_SCALAR,
],
'password' => [
'filter' => ValidArray::FILTER_EXTENDED_CALLBACK,
'flags' => FILTER_REQUIRE_SCALAR,
'options' => [
'callback' => function ($pwd) {
return (strlen($pwd) >= 8) ? password_hash($pwd, PASSWORD_BCRYPT) : false;
}
],
],
'uri' => [
'filter' => FILTER_SANITIZE_STRING,
'flags' => FILTER_REQUIRE_SCALAR,
'options' => ['default' => '#member'],
],
],
$_POST
);
$filters = [
'id' => [
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_SCALAR,
],
'name' => [
'filter' => FILTER_SANITIZE_STRING,
'flags' => FILTER_REQUIRE_SCALAR,
],
'email' => [
'filter' => FILTER_VALIDATE_EMAIL,
'flags' => FILTER_REQUIRE_SCALAR,
],
'tel' => [
'filter' => FILTER_VALIDATE_REGEXP,
'flags' => FILTER_REQUIRE_SCALAR,
'options' => [
'regexp' => '/^\+?\d+(?:[. ()-]{1,2}\d+)*$/',
'default' => '+00 (0)0 00 00 00 00',
],
],
];
$va = new ValidArray($filters, $_REQUEST);
$va['name'] = 'John Snow';
echo "{$va['name']}\n";
// prints: John Snow
foreach ($va as $name => $value) {
printf("'%s' => %s,\n", $name, var_export($value, true));
}
// prints (if $_REQUEST is empty):
// 'id' => null,
// 'name' => 'John Snow',
// 'email' => null,
// 'tel' => '+00 (0)0 00 00 00 00',
$va['email'] = 'unknown';
echo "{$va['email']}\n";
// prints empty line since $va['email'] is false
[
'id' => 175,
'name' => 'John Snow',
'email' => '[email protected] ',
'tel' => '322-223',
]
[
'id' => false,
'name' => 'X',
'email' => null,
'tel' => "+00 (0)0 00 00 00 00",
]