Я делаю проверку формы, и у меня есть небольшая проблема. В классе Insert я хочу вставить в базу данные, которые должны быть введены в пользовательскую форму. Перед добавлением данных в базу я проверяю переменную $errors на наличие ошибок. если нет, то добавляю, а если нет, то не добавляю Только то, что переменная $errors находится в классе Validation. И вот мой вопрос, что мне сделать, чтобы использовать переменную $errors из класса UserValidation в классе Insert. Я добавлю, что я использую внедрение зависимостей. Буду признателен за подсказки.
class Insert
{
private $data;
private $database;
private $validation;
public function __construct($data, $database, $validation)
{
$this->data = $data;
$this->database = $database;
$this->validation = $validation;
}
public function hash_password()
{
$field = $this->data['password'];
return $hash = password_hash($field, PASSWORD_DEFAULT);
}
public function insert_user()
{
$login = $this->data['login'];
$password = $this->data['password'];
$hash = $this->hash_password();
if(empty($this->errors))
{
$sql = $this->database->connect()->prepare("INSERT INTO users(`login`, `password`) VALUES(:login, :password)");
$sql->bindParam(':login', $login, PDO::PARAM_STR);
$sql->bindParam(':password',$hash, PDO::PARAM_STR);
$sql->execute();
}
}
}
}
?>
class UserValidation
{
private $data;
private $errors = '';
private $database;
public function __construct($data, $database)
{
$this->data = $data;
$this->database = $database;
}
public function validateLogin()
{
$val = $this->data['login'];
if(empty($val))
{
return $this->errors = "Field can not empty";
}
else if(!preg_match('/^[a-zA-Z-0-9]{4,12}$/', $val))
{
return $this->errors = "Login have to get from 4 to 12 chars.";
}else
{
$sql = $this->database->connect()->prepare("SELECT * FROM users where login = :login");
$sql->bindParam(':login', $val, PDO::PARAM_STR);
$sql->execute();
if($sql->rowCount())
{
return $this->errors = "Login is exist;
}
}
}
public function validatePassword()
{
$val = trim($this->data['password']);
if(empty($val))
{
return $this->errors = 'Field can not empty';
}
else if(!empty($val) && !preg_match('/^[A-Za-z][A-Za-z0-9]{5,31}$/', $val))
{
return $this->errors =' Password have to get almost 6 chars and begin from letter';
}
}