I'm relatively new to PHP OOP, currently I'm practising how to use it, however I am not really certain I'm building my classes correctly, I think perhaps I'm missing something out but I'm not entirely sure what, any advice would be appreciated
Class
class Validation
{
private
$password,
$repeatPassword,
$username,
$email;
private static
$minPassword = 7,
$confirmPassword,
$minUsername = 3,
$maxUsername = 14,
$validEmail;
public static function validateEmail($email)
{
return (filter_var($email, FILTER_VALIDATE_EMAIL) != self::$validEmail);
}
public static function validatePassword($password)
{
return(strlen($password) >= self::$minPassword);
}
public static function validatecheckbox($agree)
{
return(!empty($terms) >= self::$checked);
}
public static function validateRepeatPassword($repeatPassword,$password)
{
return $repeatPassword === $password;
}
public static function validateUsername($username)
{
return strlen($username) >= self::$minUsername
&& (strlen($username)) <= self::$maxUsername
&& (filter_var($username , FILTER_VALIDATE_REGEXP,["options"=> [ "regexp" => "/^[\p{L}0-9\s]+$/u"]]) == TRUE);
}
}
Usage
$errors = array();
$fields = array(
'username' => array(
'validator' => 'validateUsername',
'message' => 'What is your username?'
),
'email' => array(
'validator' => 'validateEmail',
'message' => 'Please enter a valid email',
),
'password' => array(
'validator' => 'validatePassword',
'message' => 'Password must be a minimum of seven characters'
)
);
if(!Validation::validateRepeatPassword($password, $repassword))
{
$errors[] = ["name" => "repassword", "error" => "Passwords must match"];
}
foreach($post as $key => $value)
{
if(isset($fields[$key]))
{
if(!Validation::{$fields[$key]['validator']}($value))
{
$errors[] = ['name' => $key, 'error' => $fields[$key]['message']];
}
}
}
foreach($post as $key => $value) { if(isset($fields[$key]))
\$\endgroup\$ – confusedGibbon Sep 10 '18 at 16:35