Я пытаюсь научиться веб-разработке на PHP, используя метод ООП, и у меня есть вопрос о том, как вернуть массив ошибок из метода конструктора PHP. У меня есть форма, в которую пользователь вводит информацию, но когда я проверяю данные, которые они вводят, если у них есть ошибка, я хочу иметь возможность вернуть их на страницу, которая их запросила, чтобы я мог отобразить ее в списке над формой. Как бы я поступил так? Мой код ниже и это просто тестовый код, с которым я играю, чтобы выучить PHP для веб-сайта, который мне нужно создать в ближайшем будущем. Спасибо!
Файл PHP / HTML с формой в нем: (Не волнуйтесь, я буду работать над безопасностью публикации данных формы позже)
<?php if(!isset($_POST['submit'])) { ?>
**## WANT TO INSERT ERROR LIST HERE IF ANY ERRORS FROM CONSTRUCTOR METHOD ##**
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="form1">
Please Enter a First Name: <input type="text" name="fname" /><br />
Please Enter a Last Name: <input type="text" name="lname" /><br />
Please Enter a Username: <input type="text" name="username" /><br />
Please Enter a Email: <input type="text" name="email" /><br />
Please Enter a Password: <input type="password" name="password" /><br />
<input type="submit" value="Submit" name="submit" /><br />
</form>
<?php
}
if (isset($_POST['submit']))
{
include_once("classes/User.class.php");
$u = new User($_POST['fname'],$_POST['lname'],$_POST['username'],$_POST['password'],$_POST['email'],"male");
echo "First Name: " . $u->get_first_name() . "<br />";
echo "Last Name: " . $u->get_last_name() . "<br />";
echo "Username: " . $u->get_username() . "<br />";
echo "Email: " . $u->get_email() . "<br />";
}
?>
Вот мое определение класса для создания новых пользователей, где я вызываю метод конструктора, на который ссылался:
<?php
class User
{
private $firstName = "";
private $lastName = "";
private $username = "";
private $password = "";
private $email = "";
private $gender;
private $birthday;
private $dateJoined;
private $lastVisit;
private $errors = array();
function __construct($fname,$lname,$username,$password,$email,$gender)
{
if($this->check_name($fname,$lname))
{
$this->firstName = $fname;
$this->lastName = $lname;
}
else
{
array_push($this->errors,"Please correct your first and last name");
}
if($this->check_username($username))
{
$this->username = $username;
}
else
{
array_push($this->errors,"Please choose a username.");
}
if ($this->check_password($password))
{
$this->password = sha1($password);
}
else
{
array_push($this->errors,"Passwords must be 7 or more characters");
}
$this->email = $email;
if($gender)
{
$this->gender = $gender;
}
if(!empty($this->errors))
{
foreach ($this->errors as $error) {
echo $error . "<br />";
}
unset($error);
exit();
}
}
//Getter Methods
public function get_first_name()
{
return $this->firstName;
}
public function get_last_name()
{
return $this->lastName;
}
public function get_full_name()
{
return $this->firstName . " " . $this->lastName;
}
public function get_email()
{
return $this->email;
}
public function get_username()
{
return $this->username;
}
public function get_birthday()
{
if ($this->birthday)
return $this->birthday;
}
public function get_gender()
{
if ($this->gender)
return $this->gender;
}
public function get_last_visit()
{
return $this->lastVisit;
}
//Setter Methods
public function set_first_name($fname)
{
$this->firstName = $fname;
}
public function set_last_name($lname)
{
$this->lastName = $lname;
}
public function set_full_name($fname,$lname)
{
$this->firstName = $fname;
$this->lastName = $lname;
}
public function set_email($email)
{
$this->email = $email;
}
public function set_password($password)
{
$this->password = sha1($password);
}
public function set_username($username)
{
$this->username = $username;
}
//Private methods
private function check_name($fname,$lname)
{
if($fname == "" || $lname == "")
return false;
return true;
}
private function check_username($username)
{
if($username == "")
return false;
return true;
}
private function check_password($password)
{
if(!isset($_POST['password']))
return false;
else if (strlen($password) < 7)
return false;
return true;
}
}
?>