Sterownik zmieniony. Zmian niewiele ale są. Oto one:
1. Konstruktor klasy DB został zmieniony na:
<?php
/**
* Konstruktor klasy
* @access private dostęp do klasy poprzez metodę GetInstance
*/
private private function __construct()
{
}
?>
2. Doszła nowa metoda w klasie DB opowiedzialna za połączenie z bazą:
<?php
/**
* Funfcja odpowiadająca za połączenie z bazą
* @param string $strDBHost nazwa serwera
* @param string $strDBUser nazwa użytkownika
* @param string $strDBPass hasło dla użytkownika
* @param string $strDBName nazwa bazy danych
* @return bool true w przypadku udanego nawiązania z bazą
*/
public function Connect( $strDBHost, $strDBUser, $strDBPass, $strDBName )
{
if( !$this->boolConnected )
{
$this->resConnectID = @mysql_connect( $strDBHost, $strDBUser, $strDBPass ); if( $this->resConnectID )
{
if( !$resDBSelect )
{
$this->Error();
}
else
{
$this->strDBName = $strDBName;
$this->boolConnected = true;
return true;
}
}
else
{
$this->Error();
}
}
}
?>
3. Doszło nawe pole w klasie DB:
<?php
/**
* Stan sterownika true-połączony z bazą, false-nie połączony z bazę
* @access private
* @var boolean
*/
private $boolConnected = false;
?>
4. Metody
FetchRow w klasach Result i ResultCached dostały parametr:
<?php
/**
* Zwraca tablicę utworzon? z wyniku zapytania
* @access public
* @param integer $intResultType stała php określająca typ tablicy jaki ma być z
rócony
* @return array|false zwraca wiersz z zapytania w postaci tablicy lub false w p
zypadku błędu
*/
public function FetchRow( $intResultType = MYSQL_BOTH )
{
// bez zmian ( prawie )
}
?>
A oto nowy przykład zastosowania:
<?php
include_once( 'ResultCached.class.php' );
include_once( 'Result.class.php' );
include_once( 'DB.class.php' );
$objDB = DB::GetInstance();
$objDB->Connect( 'localhost' , 'root', 'pass', 'test' );
$objResult = $objDB->Query( 'SELECT * FROM users' );
$objResult2 = $objDB->QueryCached( 'pass', 'SELECT * FROM news' );
while( $arrTab = $objResult->FetchRow() )
{
echo $arrTab[ 'user_name' ] . '<br>'; }
while( $arrTab = $objResult2->FetchRow() )
{
echo $arrTab[ 'news_title' ] . '<br>'; }
echo 'Czas wszystkich zapytań: ' . $objDB->GetExecutionTime() . '<br>'; echo 'Ilość wszystkich zapytań bo bazy: ' . $objDB->GetQueryCnt() . '<br>'; ?>
Żródła tam gdzie poprzednio.