オブジェクト指向プログラミング (OOP) はプログラミングの基本スキルであり、PHP4 は OOP を適切にサポートします。 OOP のアイデアを使用して PHP の高度なプログラミングを実行する方法は、PHP プログラミング能力を向上させ、優れた Web 開発アーキテクチャを計画するために非常に意味があります。以下では、例を使用して、PHP の OOP をプログラミングに使用する実際的な意義と応用方法を説明します。
通常、データベース バックエンドを使用して Web サイトを構築するとき、プログラムはさまざまなアプリケーション環境に適している必要があると考えます。他のプログラミング言語と異なるのは、PHP ではデータベースが一連の特定の関数によって操作されることです (ODBC インターフェイスを使用しない場合)。これは非常に効率的ですが、カプセル化だけでは十分ではありません。統一されたデータベース インターフェイスがあれば、プログラムに変更を加えることなく、それをさまざまなデータベースに適用できるため、プログラムの移植性とクロスプラットフォーム機能が大幅に向上します。
PHPでOOPを完成させるには、オブジェクトをカプセル化する、つまりクラスを書く必要があります。新しい SQL クラスを生成することで、データベースの単純なカプセル化を実現できます。例:
{
$include_path = ini_get("include_path");
$DriverFile = $include_path."/".$d.".php";ストレージ パスは PHP 内にある必要があります。ini ファイルに設定された INCLUDE_PATH の下にある必要があります
if( file_exists( $DriverFile)) //ドライバーが存在するかどうかを確認します
{
$this->Driver = new $ d();
// ドライバー名に応じて、対応するデータベースドライバークラスが生成されます
return true;
} //ドライバーの登録に失敗しました
}
function Connect($host,$user,$) passwd,$database)//データベースに接続する関数
{
$this->Driver->host=$host;
$this->Driver->user=$user; ;Driver->passwd=$pas
swd;
$this->Driver->database=$d
database;
$this->connection = $this->Driver->Connect();
}
function Close()//データベース関数を閉じる
{
$this->Driver->close($this->connection);
}
function Query($queryStr)//データベース文字列クエリ関数
{
return $this->Driver->query ($queryStr,$this->connection)
}
function getRows($res)//行を検索
{
return $this->Driver-> ;getRows($res);
function getRowsNum($res)//行番号を取得します
return $this->Driver->
}
}
?
MySQL データベースの操作を例として取り上げます。データベース ドライバー クラス MySQL を作成します。このクラスでは、MySQL データベース操作に関連する関数をさらにカプセル化します。このクラスを含むファイルを MySQL.php という名前で PHP システムの include_path 配下に置くと、正常に使用できるようになります。データベース ドライバー ファイルを作成するときは、ファイル名がクラス名と一致している必要があることに注意してください。
クラス MySQL
{
var $host;
var $user;
var $passwd;
var $database;
function MySQL() //利用构造関数数实现变量初期化
{
$host = "";
$user = "";
$passwd = 「」;
$データベース = 「」;
}
function Connect()
{
$conn = MySQL_connect($this->host, $this->user,$this->passwd) または
die("$this-> に接続できませんでした。ホスト");
MySQL_select_db($this->database,$conn) または
die("データベース $this->database;");
$conn を返す;
}
関数 Close($conn)
{
MySQL_close($conn);
}
function Query($queryStr, $conn)
{
$res =MySQL_query($queryStr, $conn) または
die("データベースをクエリできませんでした");
$res を返す;
}
関数 getRows($res)
{
$rowno = 0;
$rowno = MySQL_num_rows($res);
if($rowno>0)
{
for($row=0;$row<$rowno;$row++)
{
$rows[$row]=MySQL_fetch_row($res);
}
return $rows;
}
}
関数 getRowsNum($res)
{
$rowno = 0;
$rowno = mysql_num_rows($res);
$rowno を返します;
}
}
? >
同様に、他の「データベース制御」を自分の SQL クラスにカプセル化する場合は、対応するクラスを作成するだけでよく、同じ名前のプログラム ファイルを PHP のインクルード項目に配置するだけで済みます。
<
<
< ?
Include(“SQL.php”);
$sql = 新しい SQL; // 新しい Sql オブジェクトの生成
if($sql-> DriverRegister(“MySQL”)) //注册数据库驱动
{
$sql->Connect(“localhost”,”root”,””,”test) ”);
$res=$sql->query(“select * from test”); // 戻り查询记录集
$rowsnum = $sql->getRowsNum($res);
if($rowsnum > 0)
{
$rows = $sql->getRows($res);
foreach($rows as $row) //循環取出记录集コンテンツ
{
foreach($row as $field){
print $field;}
}
}
$sql->Close();
}
? >