abstract class BaseClassWithDB
{
protected$dbLink;
publicfunction__construct()
{
$this->dbLink =mysql_connect('localhost','root','UrPassword')ordie('fail to connect DB');
mysql_query("SET NAMES 'utf8'");
mysql_select_db('wsLookingFun',$this->dbLink)ordie('fail to select DB');
}
publicfunction__destruct()
{
mysql_close($this->dbLink);
}
protectedfunctiontoJson($key,$code)
{
$code = json_encode(array($key=>$this->urlencodeAry($code)));
//$code = json_encode($this->urlencodeAry($code));
returnurldecode($code);
}
protected function urlencodeAry($data)
{
if(is_array($data))
{
foreach($dataas$key=>$val)
{
$data[$key] = $this->urlencodeAry($val);
}
return$data;
}
else
{
returnurlencode($data);
}
}
}
//catalog 資料表
class Catalog extends BaseClassWithDB
{
staticprivate$instance=NULL;
publicfunction__construct()
{
parent::__construct();
}
//singlton
staticpublicfunctiongetInstance()
{
if(self::$instance == NULL)
{
self::$instance = new Catalog();
}
return self::$instance;
}
function __get($property)
{
echo"get property values";
}
function__set($property,$value)
{
echo"set property values ";
}
//query data 查詢
function getCatalog($timestamp_, $format_='json')
{
$query="select * from catalogs";
$catalogs = array();
$result = mysql_query($query,$this->dbLink)or die('fail to query data!');
if(mysql_num_rows($result))
{
while($catalog=mysql_fetch_assoc($result))
{
$catalogs[] =array('catalog'=>$catalog);
}
}
//output
//json
if($format_=='json')
{
header('Content-type: application/json');
echo $this->toJson('catalogs',$catalogs);
}
}
//insert data 新增
function setCatalog()
{
$catalog__=file_get_contents('php://input');
$obj = json_decode($catalog__);
$id = $obj->{'id'};
$desc = $obj->{'description'};
$insert="insert into catalogs(id,description)values('$id','$desc')";
if(!mysql_query($insert,$this->dbLink))
echo'insert fail';
elseecho'insert success';
}
}
$timestamp=$_GET['timestamp'];
$format=isset($_GET['format'])?strtolower($_GET['format']):'json';
$action=isset($_GET['action'])?($_GET['action']):NULL;
$catalog_ = Catalog::getInstance();
if(!($action=='insert'))
$catalogs=$catalog_->getCatalog($timestamp,$format);
else
$catalogs = $catalog_->setCatalog();
?>