[英]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.