私はOOPの初心者です。子供がいないDatabase
クラス、母親はuserInfo
クラス、娘はlogin
クラスです。 Database Manager
でphp OOPは他のクラスで私の関数を拡張なしで使っています
は、私はすべてのための動的機能を作ることができ、この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
クラスは、どのように私は、ログイン(子供)クラスを使用してusernameExists
関数を呼び出すことができuserInfo
(母親)から延びていますか? (userInfo ...)パラメータが私をブロックしているので
ありがとう! (ここではケースのようです)
'Login'クラスの中で' usernameExists'関数を呼び出す必要がありますか? – Perumal
'Login'クラスの中で' usernameExists'関数を呼び出すには 'Database'オブジェクトを' Login'内部の関数に渡す必要があります。 – Perumal
小文字: 'SELECT COUNT(username)'を 'cnt'として 'SELECT COUNT(username) 'に変更し、' $ donnees [' COUNT(username) ']の代わりに '$ donnees [' cnt ']' – RiggsFolly