私はPHP OOPが初めてです。以下は私のVERY FIRSTクラスファイルです。このコードに柔軟性を追加し、関数を追加してクエリを実行し、後で使用するために結果 (fetch_assoc/fetch_array のいずれか) を配列 (または var など) に割り当てることもできます。
クエリの実行で私が抱えている問題は、両方のクラスをまとめることができないことです (ネスト?): $db->Query->Select('myTable');
OR $db->Query->Select('myTable')->Where($pageID);
OR$db->Query->Select('myTable')->Where($pageID)->OrderBy('name');
また、このコードで何か間違ったことをしている場合や、改善のための提案がある場合はお知らせいただければ幸いです。そうすれば、将来的により良いphpクラスを書くことができます=)。
<?php
require( $_SERVER['DOCUMENT_ROOT'] . '/database/database-connection-info.php');
//This file (database-connection-info.php) contains $config[];
class db {
private $db;
private $type = 'read-only';
//$config['db']['dbh'] = Database Host
//$config['db']['dbn'] = Database Name
//$config['db'][$type]['dbu'] = [User type][user name]
//$config['db'][$type]['dbp'] = [User type][password]
public function __construct($type = null) {
global $config;
$this->config = $config;
$this->Connect($type);
}
public function Connect($type) {
global $config;
switch( $type ) {
case 'admin':
$this->type = 'admin';
$this->db = mysql_connect( $this->config['db']['dbh'] , $this->config['db'][$type]['dbu'] , $this->config['db'][$type]['dbp'] );
return $this->db;
default:
$this->type = 'read-only';
$type = 'read';
$this->db = mysql_connect( $this->config['db']['dbh'] , $this->config['db'][$type]['dbu'] , $this->config['db'][$type]['dbp'] );
return $this->db;
}
}
public function Close() {
mysql_close();
mysql_close($this->db);
$this->type = 'Closed';
}
public function Type() {
return "<b>Database connection type</b>: " . $this->type . "<br/>";
}
public function Status() {
if( !@mysql_stat($this->db) )
{ return "<b>Database connection status</b>: There is no database connection open at this time.<br/>"; }
else { return "<b>Database connection status</b>: " . mysql_stat($this->db) . "<br/>"; }
}
}
//For testing purposes
$db = new db(admin);
echo $db->Type();
echo $db->Status();
echo $db->Close();
echo $db->Status();
echo $db->Type();
?>