ОБСУЖДЕНИЕ

Что посоветуете?

1 сообщений1 просмотровОткрыта
#1
У меня ступор.
Есть singleton (dbhandler) (static) вызывается статической функцией getInstance().
Есть пользовательский класс со статическими функциями, без вызова экземпляра класса, проверка осуществляется следующим образом User:Authenticate();

Вопрос, как осуществить приватный экземпляр обработчика бд в пользовательском классе?
dbhandler.php (singleton)
PHP
<?php

// Singleton
class dbhandler
{
    
    private static $_instance = null;
        
    public static function getInstance()
    {
    
        if (!isset (self::$_instance))
            self::$_instance = new PDO('mysql:host=localhost;port=3306;dbname=testdb;charset=utf8', 'root', '', array (
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
            ));
    
        return self::$_instance;
    
    }

    public function __destruct()
    {
    
        self::$_instance = null;
    
    }

}




user.php
PHP
<?php

class User extends dbhandler
{
    
    private static $_data = null;
    
    //
    public static function Authenticate()
    {
        
        if (isset ($_COOKIE['user_data'])) {
            
            //
            //
            // 
            $data = unserialize(
                stripslashes($_COOKIE['user_data'])
            );

            $q = self::getInstance()->prepare('SELECT * FROM `user` WHERE (`id`=?) AND (`password`=?)');
            $q->execute(
                array (
                    $data['id'],
                    $data['password']
                )
            );
            if ($q->rowCount() != 0) {
                
                self::$_data = $q->fetch();
                
                // 
                // 
                // 
                if ($_data['hash'] == $data['hash']) {
                    
                    
                    //
                    self::update();
                    
                    
                    
                    
                    
                    
                    

                    //
                    //
                    //
                    return self::$_data;
                
                }
                
            }
            
        }
    }
    
    private static function update()
    {
        // 
        // 
        // 
        $q = self::getInstance()->prepare('UPDATE `user` SET `joinDate`=? WHERE (`id`=?)');
        $q->execute(
            array (
                time(),
                self::$_data['id']
            )
        );

    }
    
}




Спасибо!