Как из класса вывести переменные

Тема в разделе "PHP", создана пользователем serjinio, 28 мар 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    PHP:
    class sql_connect 
    {    # Установки соединения с базой данных
        
    private $db_host =''// Адрес MySQL-сервера
        
    private $db_user =''// Имя пользователя...
        
    private $db_pass =''// Пароль
        
    private $db_name =''// Имя базы данных 

        
    private   $db NULL// дескриптор соединения   #source
        
    protected $q_count=0// количество sql запросов #int
        
    protected $q_time0// время sql #int
        
    protected $delta 0// время выполнения sql запросов #int
            
    public function __construct()
            {
                
    $this->db =mysql_connect$this->db_host$this->db_user,$this->db_passFALSE) or die('MySQL error  ');
                
    mysql_query("SET NAMES 'utf8'",$this->db); 
                
    mysql_select_db($this->db_name,$this->db) or die('MySQL error : '.mysql_error());
                return 
    TRUE;
            }
        public function 
    do_query($query)
        {
            
    $this->q_count++;
            
    $t_start microtime(1);//старт SQL 
            
    $this->result mysql_query($query$this->db);
            
    $q_time =(microtime(1)-$t_start);
            
    $this->delta+=$q_time;
            return(
    $this->result);
        }
        public function 
    __destruct()
        {
            
    mysql_close($this->db);
        }
    }
    $DB = new sql_connect;
    Надо получить из функции do_query()
    q_count и delta
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    558
    Переменные защищены от прямого доступа, как вариант добавить две функции, которые будут выводить необходимое
    PHP:
    ### добавить в класс
                 
    public function getQueryCount() {
                    return 
    $this->q_count;
                }  
                
                public function 
    getDelta() {
                    return 
    $this->q_count;
                }    
    ### /добавить в класс


            
    $DB = new sql_connect;
            echo 
    $DB->getQueryCount(); 
            echo 
    $DB->getDelta();    запросов       

     
    serjinio нравится это.
  3. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Всё нормально запустилось но есть вопрос
    PHP:
            private static $q_count0// количество sql запросов #int
            
    private static $q_time 0// время sql #int
            
    public function __construct()
            {
                
    $this->db =mysql_connect$this->db_host$this->db_user,$this->db_passFALSE); 
                
    mysql_query("SET NAMES 'utf8'",$this->db); 
                
    mysql_select_db($this->db_name,$this->db); 
                return 
    TRUE;
            }
            public function 
    do_query($query
            {
                
    $t_start=microtime(1);
                
    $this->result mysql_query($query$this->db);
                
    $this->q_count++;
                
    $this->q_time +=(microtime(1)-$t_start);
                return(
    $this->result);
            }
            public function 
    Process()
            {  
                
    $q_sql $this->do_query("SHOW PROCESSLIST",$this->db);
            }
            public function 
    QueryCount() {return $this->q_count;}
            public function  
    QueryTime() {return $this->q_time;}        
            public function   
    db_close() {return mysql_close($this->db);}
            public function 
    __destruct() {$this->db_close();} 
    }
    $mysql = new sql_connect();
    $mysql->do_query("SELECT * FROM `img` ");
    echo 
    'Количество MySQL запросов: '.$mysql->QueryCount().'<br />';
    echo 
    'Время выполнения MySQL запросов: '.round($mysql->QueryTime(), 5).' секунд<br />';
    Внешние соединения считает правильно , но соединения внутри класса не считает в частности
    PHP:
    public function Process(){  
       
    $q_sql $this->do_query("SHOW PROCESSLIST",$this->db);
     }
     
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    558
    PHP:
                public function Process() {  
                    
    $t_start=microtime(1);
                    
    $q_sql $this->do_query("SHOW PROCESSLIST",$this->db);
                    
    #$this->q_count++; # если нужно ещё и считать их расскоментируй 
                    
    $this->q_time +=(microtime(1)-$t_start);          
                }
     
Статус темы:
Закрыта.