Advertisement
zero50x

PHP ООП типа Dependency Injection

Aug 15th, 2017
611
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.61 KB | None | 0 0
  1. // не уверен что это полноценный паттерн Dependency Injection но очень похоже
  2. class DB
  3. {
  4.     protected $host = 'localhost';
  5.     protected $db =   'name';  // имя базы
  6.     protected $charset = 'utf8';
  7.     protected $user = 'user';       //  имя юзера
  8.     protected $pass = 'qwertyu';  //  пароль юзера
  9.  
  10.     public function __construct() {
  11.         $dsn = "mysql:host=$this->host;dbname=$this->db;charset=$this->charset";
  12.         $opt = array(PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
  13.                      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
  14.         );
  15.         try {$this->DBconnect = new PDO($dsn, $this->user, $this->pass, $opt);}
  16.         catch( PDOException $Exception ) {}
  17.         }
  18.     }
  19.  
  20.     // проверка на наличие e-mail в базе 0 - нет, иначе да
  21.     public function checkDoubleMail($table, $column, $email) {
  22.         // Проверим есть ли такой юзер
  23.         $auth = $this->DBconnect->prepare('SELECT COUNT(*) FROM `'.$table.'` WHERE `'.$column.'`=:mail');
  24.         $auth->bindParam(':'.$column, $email, PDO::PARAM_STR);
  25.         $auth->execute();
  26.         $Count = $auth->fetchAll();
  27.         return intval(implode('', $Count[0]));
  28.     }
  29. }
  30.  
  31. class Validator
  32. {
  33.     public function checkUnique($table, $column, $email)
  34.     {
  35.         $count = (new DB())->checkDoubleMail($table, $column, $email);
  36.         return $count;
  37.     }
  38. }
  39.  
  40. $val = new Validator();
  41. $check = $val->checkUnique('users', 'mail', 'mail@yandex.ru');
  42. echo '<pre>'; var_dump($check); echo '</pre>';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement