理解抽象类最快的方法就是使用场景,最近在看布尔PHP视频中看到这样的讲解非常容易懂,分享出来。
假设如下场景:
团队准备开发某网站,表建好了,页面设计好了.
A组负责开发底层数据库操作类(DB)(多个DB类,操作Mysql类,操作SQLSERVER,SQLlite......).
B级负责调用DB类.
A组发生了争执,MySQL? Oracle? DB2? sqlite?规范是什么?
B组.... 在争执中漫长等待.
能否让B组不等待?
解决:
A组和B组先定1个数据库类的模板:
模板中对 方法名,参数,返回值,都做严格的规定
此时不管A组选用什么数据库,对于B组来说,没有任何影响;
代码如下:(只需要知道抽象类是一种规范,具体实现由子类来做。)
//定义一个抽象类,相当于模板
abstract class DB{
/*
* 连接数据库,从配置文件读取配置信息
*
*/
abstract public function conn();
/*
* 执行参数中的sql语句
*
*/
abstract public function query($sql);
/*
* 获取多行数据
*
*/
abstract public function getAll();
/*
* 获取单条数据
*
*/
abstract public function getOne();
/*
* 自定义创建Sql语句执行 (数据关联数组,表名字,动作,条件)
*
*/
abstract public function Exce($data,$table,$act='insert',$where='0');
/*
* 返回上一条insert语句产生的主键值
*
*/
abstract public function lastId();
/*
* 返回上一条语句影响的行数
*
*/
abstract public function affectRows();
}
//01.使用抽象类先来创建一个Mysql操作类
class Mysql extends DB{
public function __construct(){
}
public function conn(){
}
public function query($sql){
}
public function getAll(){
}
public function getOne(){
}
public function Exce($data,$table,$act='insert',$where='0'){
}
public function lastId(){
}
public function affectRows(){
}
}
//02.使用抽象类先来创建一个Mssql操作类
class Mssql extends DB{
public function __construct(){
}
public function conn(){
}
public function query($sql){
}
public function getAll(){
}
public function getOne(){
}
public function Exce($data,$table,$act='insert',$where='0'){
}
public function lastId(){
}
public function affectRows(){
}
}
Session在默认情况下是使用客户端的Cookie来保存Session ID的,所以当客户端的cookie出现问题的时候就会影响Session了,如果你单纯的认为SESSION和COOKIE没有联系的话请迅速百度补脑。 &nbs...
function objtoarr($obj){ $ret = array(); foreach($obj as $key =>$value){ if(gettype($value) == 'arr...
//$ak开发密钥,$cityname城市名称(支持省县乡详细地址) public function getposition($ak,$cityname){ $callback=array('lng'=>0,'l...
先在centos安装openssl,然后开始://生成私钥openssl genrsa -out rsa_private_key.pem 1024//生成公钥openssl rsa -in rsa_private_key.pem&...
md5/sha1+salt方式是目前各大cms常用的加密方式,虽然salt安全,但是各大md5网站也在研究这个方向,那么我们应该选择password_hash动态hash来助力,一种密码有多种hash结果.看代码模拟登陆.<?php //01.注册 $user ='zhang...
php arrayaccess 官方的说法是让你能以数组的形式访问对象,对于这种php内置接口一直不太明白有什么用,坚持多看文章,终于理解,特来分享,思路不同,更易于理解。(1).创建一个学生类,并且实现arrayaccess 接口。<?php class studen...