物件導向程式設計(OOP)是我們程式設計的基本技能,PHP4對OOP提供了良好的支援。如何運用OOP的想法來進行PHP的高階編程,對於提升PHP編程能力和規劃好Web開發架構都是非常有意義的。下面我們就透過實例來說明使用PHP的OOP進行程式設計的實際意義和應用方法。
我們通常在做一個有資料庫後台的網站的時候,都會考慮到程式需要適用於不同的應用環境。和其他程式語言有所不同的是,在PHP中,操作資料庫的是一系列的具體功能函數(如果你不使用ODBC介面的話)。這樣做雖然效率很高,但封裝卻不夠。如果有一個統一的資料庫接口,那麼我們就可以不對程式做任何修改而適用於多種資料庫,從而使程式的移植性和跨平台能力都大大提高。
在PHP中要完成OOP,需要進行物件封裝,也就是寫類別。我們可以透過產生一個新的SQL類別來實現對資料庫的簡單封裝。例如:
class SQL
{
var $Driver; //實際操作的資料庫驅動子類別 var $connection; //實際運作的資料庫驅動子類別 var $connection; 🎜>function DriverRegister($d)
{
if($d!="")
{
$include_path = ini_get("include_path"); "/".$d.".php";
//驅動的存放路徑必須在PHP.ini檔案中設定的INCLUDE_PATH下
if( file_exists( $DriverFile)) //查找驅動程式是否存在
{
include($DriverFile);
$this->Driver = new $d();
// 根據驅動名稱產生對應的資料庫驅動類別
🎜>// 依據驅動名稱產生對應的資料庫驅動類別
🎜>// 依據驅動名稱產生對應的資料庫驅動類別
> >}
}
return false; //註冊驅動失敗
}
function Connect($host,$user,$passwd,$database)//連接數據庫的函數
{
$this->Driver->host=$host;
$this->Driver->user=$user;
$this->Driver->passwd=$pas
swd;
$this->Driver->database=$d
atabase;
$this->connection = $this->Driver->Connect();
}
function/ Close()/ Close()/關閉資料庫函數
{
$this->Driver->close($this->connection);
}
function Query($queryStr)//資料庫查詢查詢
return $this->Driver->query($queryStr,$this->connection);
}
function getRows($res)//查找行 {this
->Driver->getRows($res);
}
function getRowsNum($res)//取得行號
{
return $this->Driver-> getRowsNum ($resws);
}
}
? >
我們以操作MySQL資料庫為例。我們寫一個資料庫驅動類別MySQL,在該類別中,我們把有關MySQL資料庫操作的函數都做進一步的封裝。把包含該類,檔案名稱為MySQL.php的檔案放在PHP的系統 include_path下,就可以正常地使用了。注意編寫資料庫驅動檔案時,檔案名稱應和類別名稱保持一致。
類別MySQL
{
var $host;
var $user;
var $passwd;
var $資料庫;
function MySQL() // 利用建構子實作函數實作函數變數初始化
{
$host = "";
$user = "";
$passwd = "";
$資料庫=“”;
}
函數Connect()
{
$conn = MySQL_connect($this->host, $this->user,$this->passwd) 或
die( “無法連接$this->主機”) ;
MySQL_select_db($this->database,$conn) 或
die("無法切換到資料庫$this->database;");
回傳$conn;
}
函數函數關閉($conn)
{
MySQL_close($conn);
}
函數查詢($queryStr,$conn)
函數查詢($queryStr,$conn)
SQL> queryStr,$conn)或
die(「無法查詢資料庫」) ;
回傳$res;
}
函數getRows($res)
{
$rowno = 0;
$rowno = MySQL_num_rows($res);
if($rowno>0)
{
for($row=0;$row{
$rows[$row]=MySQL_fetch_row($資源);
}
回傳$行;
}
}
$rowno = 0;
$rowno = mysql_num_rows($res);
回傳$rowno;
}
}
? >
同樣我們要把其他的「資料庫驅動」封裝到我們的SQL類別中,只需要建立對應的類,並以同名命名驅動文件,放到PHP的include目錄就可以了。
完成封裝以後,就可以在PHP中依照OOP的想法來實現對資料庫的程式設計了。
包含(“SQL.php”);
$sql = 新SQL; // 產生新的Sql物件
if($sql-> DriverRegister(“MySQL”)) //註冊資料庫驅動
{
$sql->Connect(“localhost”,”root” ,““,“測試”);
$res=$sql->query(“從測試中選擇*”); / /回傳查詢記錄集
$rowsnum = $sql->getRowsNum($res);
if($rowsnum > 0)
{
$rows ;
foreach($rows as $row) //循環擷取記錄集內容
{
foreach($row as $field){
print $field;}
} }
$sql->Close();
}
? >
在實際應用中,我們也可以根據實際需求對各種物件類別做進一步擴展。在PHP中,也提供了一系列複雜的OOP方法,例如繼承、重載、引用、串行充分調節各種方法並靈活運用,就能夠使你的網站更合理和構造,開發和維護也更容易。