@Karpkarp

Почему не работает метод?

Есть файл с регистрацией
namespace Registration;

require_once 'Db.php';
use Database\Db;

class Registration {

	public $email;
	public $login;
	public $password;
	public $connection;

	public function __construct() {
		$this->email = $_POST['email'];
		$this->login = $_POST['login'];
		$this->password = $_POST['password'];
		$this->connection = Db::Connect();
	}

	public function Registr() {
		if(isset($_POST['btn'])) {
			if($this->login !== '' && $this->email !== '' && $this->password !== '') {
				$dbh = $this->connection;
				$sth = $dbh->prepare("INSERT INTO users (email,login,password) VALUES ('$this->email','$this->login','$this->password')");
				$sth->execute();
				header('Location: /');
			} else {
				echo 'Заполните все поля <a href="../View/registration.php"><b>Registration</b></a>';
			}
		}
	}

}


И файл который вызывает метод регистрации

require_once 'Model/Registration.php';
use Registration\Registration;

$registration = new Registration();
$registration->Registr();

require_once 'View/index.php';


При вызове функции Registr() ничего не происходит, NULL. Работает только в том случае, если метод вызывается из того файла, где он написан.
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 2
@hecby_v
По идее, раз других ошибок нет, у вас null возможен только если не пришел $_POST['btn']
Ответ написан
Комментировать
@Nc_Soft
У вас ООП ради ООП. Код ужасен, вот и не работает. Смысла в классе таком вообще нет (глобально видимые переменные в конструкторе). А ваш db.prepare достоин отдельных слов: сама идея такого prepare имеет примерно столько же смысла, что и класс регистрации.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы