Home >Backend Development >PHP Tutorial >PHP Design Pattern Series - Template Pattern_PHP Tutorial
Template mode
The template design pattern creates an abstract object that implements a set of methods. Subclasses often use this object as a template for their own designs.
Design scene
Generally used for database abstract classes.
Code design:
[php]
if (!defined('IS_INITPHP')) exit('Access Denied!');
/***************************************************** *******************************
* InitPHP 2.0 Domestic PHP development framework Dao-dbbase Driver DB base class
*------------------------------------------------ ----------------------------------
* Copyright: CopyRight By initphp.com
* You can use this source code freely, but please keep the author information during use. Respecting the fruits of others’ labor means respecting yourself
*------------------------------------------------ ----------------------------------
* $Author:zhuli
* $Dtime:2011-10-09
*************************************************** **********************************/
abstract class dbbaseInit{
/**
*Abstract database link
* @param string $host sql server
* @param string $user database username
* @param string $password Database login password
* @param string $database database
* @param string $charset encoding
* @param string $pconnect Whether the link is persistent
*/
abstract protected function connect($host, $user, $password, $database, $charset = 'utf8', $pconnect = 0);
/**
* * Abstract database execution statement
* @param string $sql SQL statement
* @return obj
*/
abstract protected function query($sql);
/**
*Abstract database-Number of rows in result set
* @param $result result set
* @return array
*/
abstract protected function result($result, $num=1);
/**
*Abstract database-get a row from the result set as an associative array
* @param $result result set
* @return array
*/
abstract protected function fetch_assoc($result);
/**
*Abstract database-get column information from the result set and return it as an object
* @param $result result set
* @return array
*/
abstract protected function fetch_fields($result);
/**
* Abstract database - the number of records affected by the previous operation
* @return int
*/
abstract protected function affected_rows();
/**
*Abstract database-Number of rows in result set
* @param $result result set
* @return int
*/
abstract protected function num_rows($result);
/**
*Abstract database-Number of fields in the result set
* @param $result result set
* @return int
*/
abstract protected function num_fields($result);
/**
* Abstract database-get the ID value of the previous INSERT
* @return Int
*/
abstract protected function insert_id();
/**
*Abstract database-release result memory
* @param obj $result The object that needs to be released
*/
abstract protected function free_result($result);
/**
*Abstract database link closed
* @param string $sql SQL statement
* @return obj
*/
abstract protected function close();
/**
* Error message
* @return string
*/
abstract protected function error();
}
if (!defined('IS_INITPHP')) exit('Access Denied!');
/***************************************************** *******************************
* InitPHP 2.0 Domestic PHP development framework Dao-mysqli base class
*------------------------------------------------ ----------------------------------
* Copyright: CopyRight By initphp.com
* You can use this source code freely, but please keep the author information during use. Respecting the fruits of others’ labor means respecting yourself
*------------------------------------------------ ----------------------------------
* $Author:zhuli
* $Dtime:2011-10-09
*************************************************** **********************************/
class mysqliInit extends dbbaseInit{
public $link_id; //链接对象
/**
* MYSQL Connector
* @param string $host sql server
* @param string $user database username
* @param string $password Database login password
* @param string $database database
* @param string $charset encoding
* @param string $pconnect Whether the link is persistent
* @return obj
*/
public function connect($host, $user, $password, $database, $charset = 'utf8', $pconnect = 0) {
$link_id = ($pconnect == 0) ? mysqli_connect($host, $user, $password) : mysqli_pconnect($host, $user, $password);
if (!$link_id) InitPHP::initError('mysql connect error!');
mysqli_query($link_id, 'SET NAMES ' . $charset);
if (!mysqli_select_db($link_id, $database)) InitPHP::initError('database is not exist!');
return $link_id;
}
/**
* SQL Executor
* @param string $sql SQL statement
* @return obj
*/
public function query($sql) {
return mysqli_query($this->link_id, $sql);
}
/**
* Number of rows in the result set
* @param $result result set
* @return array
*/
public function result($result, $num=1) {
return mysqli_result($result, $num);
}
/**
* Get a row from the result set as an associative array
* @param $result result set
* @return array
*/
public function fetch_assoc($result) {
return mysqli_fetch_assoc($result);
}
/**
* Get column information from the result set and return it as an object
* @param $result result set
* @return array
*/
public function fetch_fields($result) {
return mysqli_fetch_field($result);
}
/**
* Number of rows in the result set
* @param $result result set
* @return int
*/
public function num_rows($result) {
return mysqli_num_rows($result);
}
/**
* Number of fields in the result set
* @param $result result set
* @return int
*/
public function num_fields($result) {
return mysqli_num_fields($result);
}
/**
* * Release result memory
* @param obj $result The object that needs to be released
*/
public function free_result($result) {
return mysqli_free_result($result);
}
/**
* Get the ID value of the previous INSERT
* @return Int
*/
public function insert_id() {
return mysqli_insert_id($this->link_id);
}
/**
* * Number of records affected by the previous operation
* @return int
*/
public function affected_rows() {
return mysqli_affected_rows($this->link_id);
}
/**
*Close connection
* @return bool
*/
public function close() {
if ($this->link_id !== NULL) @mysqli_close($this->link_id);
$this->link_id = NULL;
return true;
}
/**
* Error message
* @return string
*/
public function error() {
return mysqli_error($this->link_id);
}
}
作者:initphp