温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP 之模板模式

发布时间:2020-07-21 11:35:42 来源:网络 阅读:373 作者:jackdongting 栏目:开发技术

我们可能会遇到这种情况,为了实现一些业务逻辑,我们会对同一个对象来回重建进行业务处理


比如说做试卷,老师除了一套试卷,学生们拿到试卷只有两个地方不一样,填写的答案和名字


这样的话,整体的算法骨架是一定的,你只需要固定出来一套题就可以,子类去修改其中一两部


应用情境:数据库中间层的抽象类


上代码

<?php //模板设计模式创建了一个实施一组方法的抽象对象,子类通常将这个对象作为模板用于自己的设计。 //一般会用于数据库抽象类。 abstract class dbbaseInit{	/**      * 抽象数据库链接      * @param  string $host sql服务器      * @param  string $user 数据库用户名      * @param  string $password 数据库登录密码      * @param  string $database 数据库      * @param  string $charset 编码      * @param  string $pconnect 是否持久链接      */ 	abstract protected function connect($host,$user,$password,$database,$charset='utf-8',$pconnect=0);	/**      * 抽象数据库执行语句      * @param  string $sql SQL语句      * @return obj      */ 	abstract protected function query($sql);	/**      * 抽象数据库-结果集中的行数      * @param $result 结果集      * @return array      */ 	abstract protected function result($result,$num=1);	/**      * 抽象数据库-从结果集中取得一行作为关联数组      * @param $result 结果集      * @return array      */ 	//这个方法没用过(不是数字索引而是字段)	abstract protected function fetch_assoc($result);	 /**      * 抽象数据库-从结果集中取得列信息并作为对象返回      * @param  $result 结果集      * @return array      */      abstract protected function fetch_fields($result);       /**      * 抽象数据库-前一次操作影响的记录数      * @return int      */        //这个也没有用过       abstract protected function affected_rows();      /**      * 抽象数据库-结果集中的行数      * @param $result 结果集      * @return int      */        abstract protected function num_rows($result);      /**      * 抽象数据库-结果集中的字段数量      * @param $result 结果集      * @return int      */       abstract protected function num_fields($result);      /**      * 抽象数据库-获取上一INSERT的ID值      * @return Int      */       abstract protected function insert_id();      /**      * 抽象数据库-释放结果内存      * @param obj $result 需要释放的对象      */       abstract protected function free_result($result);      /**      * 抽象数据库链接关闭      * @param  string $sql SQL语句      * @return obj      */      abstract protected function close();      /**      * 错误信息      * @return string      */       abstract protected function error(); } //这是具体的某个数据库,比如MySQL,oracle class mysqliInit extends dbbaseInit{	public $link_id;	//重写模型中的连接类	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) die('mysql connect error!');	mysql_query($link_id,'set names'.$charset);	if(!mysqli_select_db($link_id,$database)) die('database is not exist');	return $link_id;	}	public function query($sql){	return mysqli_query($this->link_id,$sql);	}	public function result($result,$num=1){	return mysqli_result($result,$num);	}	public function fetch_assoc($result){	return mysqli_fetch_assoc($result);	}	public function fetch_fields($result){	return mysqli_num_fields($result);	}	public function free_result($result){	return mysqli_free_result($result);	}	public function insert_id(){	return mysqli_insert_id($this->link_id);	}	public function affected_rows() {          return mysqli_affected_rows($this->link_id);      }     public function close(){     	if($this->link_id!==null) $mysqli_close($this->link_id);     	$this->link_id = null;     	return true;     }     public function error(){     	return mysqli_error($this->link_id);     } } ?>



有点累了,设计模式常用的先学到这里,后续的以后再说,


愿法界众生,皆得安乐

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI