繁体   English   中英

PHP OOP在其他类中使用我的函数而无需扩展

[英]Php OOP use my function in other class without extends

我是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;
        }



    }

我的数据库管理器我可以为所有内容创建动态函数,但我认为这样更容易阅读,但是无论我是菜鸟还是=)。

<?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 (母亲)扩展而来,如何使用login(children)类调用usernameExists函数? 因为(userInfo ...)参数阻止了我

谢谢 !

如果您的函数可以在没有上下文的情况下使用(此处似乎是这种情况),只需将其定义为静态方法,以便可以从以下任何地方调用它: Database::usernameExists()

否则,您必须将Database对象传递给Login类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM