2016-12-02 8 views
0

私はOOPの初心者です。子供がいないDatabaseクラス、母親はuserInfoクラス、娘はloginクラスです。 Database Managerphp 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 ...)パラメータが私をブロックしているので

ありがとう! (ここではケースのようです)

+0

'Login'クラスの中で' usernameExists'関数を呼び出す必要がありますか? – Perumal

+0

'Login'クラスの中で' usernameExists'関数を呼び出すには 'Database'オブジェクトを' Login'内部の関数に渡す必要があります。 – Perumal

+2

小文字: 'SELECT COUNT(username)'を 'cnt'として 'SELECT COUNT(username) 'に変更し、' $ donnees [' COUNT(username) ']の代わりに '$ donnees [' cnt ']' – RiggsFolly

答えて

-1

あなたの関数は、コンテキストなしで使用することができるならば、あなたはどこにもこのようなからそれを呼び出すことができますので、単に静的なメソッドとして定義:Database::usernameExists()

そうしないと、合格しなければなりませんDatabaseオブジェクトのLoginクラス

関連する問題