我是OOP的初学者,我有一个没有孩子的Database
班,一个userInfo
班是母亲,一个login
班是女儿。
在Database Manager
中,我有function
public function usernameExist(userInfo $user)
{
$q = $this->_db->prepare('SELECT COUNT(username) FROM register where username=:username');
// on bind
$q->bindValue(':username', $user->username());
$q->execute();
$donnees = $q->fetch(PDO::FETCH_ASSOC);
// on verifie le contenu de $donnees
if($donnees['COUNT(username)'] >= '1')
{
// l'utilisateur existe on retourne true
return true;
}
}
我的数据库管理员 我可以为所有内容创建一个动态函数,但我觉得它更容易阅读,但不管我是一个noob =)。
<?php
/**
* Created by PhpStorm.
* User: Arnaud
* Date: 29/11/2016
* Time: 23:52
*/
class Manager
{
protected $_db;
public function __construct($db)
{
$this->setDB($db);
}
//getter
// on regarde si le nom d'utilisateur est déjà pris
public function usernameExist(userInfo $user)
{
$q = $this->_db->prepare('SELECT COUNT(username) FROM register where username=:username');
// on bind
$q->bindValue(':username', $user->username());
$q->execute();
$donnees = $q->fetch(PDO::FETCH_ASSOC);
// on verifie le contenu de $donnees
if($donnees['COUNT(username)'] >= '1')
{
// l'utilisateur existe on retourne true
return true;
}
}
// methode pour verifier si l'email entrée existe
public function emailExist(userInfo $user)
{
try
{
$q = $this->_db->prepare('SELECT COUNT(email) FROM register WHERE email=:email');
$q->bindValue(':email', $user->email());
$q->execute();
}
catch (PDOException $e)
{
echo $e->getMessage();
}
// on réccupère les infos
$donnees = $q->fetch(PDO::FETCH_ASSOC);
//si l'email existe on renvois true
if($donnees['COUNT(email)'] >= '1')
{
return true;
}
// sinon false
elseif($donnees['COUNT(email)'] == '0')
{
return false;
}
}
//ajout de l'utilisateur
public function ajout(userInfo $user)
{
$q = $this->_db->prepare('INSERT INTO register(username,password,email) VALUES(:username,:password,:email)');
$q->bindValue(':username', $user->username());
$q->bindValue(':password', $user->password());
$q->bindValue(':email', $user->email());
$q->execute();
// si tout s'est bien passé
$donnees = $q->fetch(PDO::FETCH_ASSOC);
}
//suppression d'un utilisateur
public function suppression(userInfo $user)
{
$q = $this->_db->query('DELETE FROM register WHERE username='.$user->username());
if($q)
{
return true;
}
}
// reccuppéré l'id selon l'username ou email
public function getID(userInfo $user,$methode)
{
// si la méthode demandée est de retrouver l'id selon le nom utilisateur
if($methode == 'username')
{
$q = $this->_db->prepare('SELECT id FROM register WHERE username=:username');
$q->bindValue(':username', $user->username());
$q->execute();
$donnees = $q->fetch(PDO::FETCH_ASSOC);
return $donnees['id'];
}
// si il est demandé par email
if($methode == 'email')
{
$q = $this->_db->prepare('SELECT id FROM register WHERE email=:email');
$q->bindValue(':email', $user->email());
$q->execute();
$donnees = $q->fetch(PDO::FETCH_ASSOC);
return $donnees['id'];
}
}
public function passwordMatch(login $user,$password)
{
$q = $this->_db->prepare('SELECT password FROM register WHERE username=:username');
$q->bindValue(':username', $user->username());
$q->execute();
$donnees = $q->fetch(PDO::FETCH_ASSOC);
if($donnees['password'] == $password)
{
return true;
}
elseif($donnees['password'] != $password)
{
return false;
}
}
//setter
public function setDB(PDO $db)
{
$this->_db = $db;
}
}
我的登录课几乎是空的,因为我被卡住了。
登录类
class login extends userInfo
{
protected $_dbParam;
public function usernameExistParam(Manager $db)
{
// well i'm stuck x)
}
}
?>
我的login
课程从userInfo
(母亲)延伸,如何使用登录(儿童)课程调用usernameExists
课程?因为(userInfo ...)参数阻止了我
谢谢!