理解抽象类最快的方法就是使用场景,最近在看布尔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(){ } }
首先看看以下代码:代码1:<?php $a=0.1; $b=0.7; if($a+$b==0.8) { echo "1"; } else{ echo "2"; } ?>代码2:<?php &n...
【一】.介绍session由于HTTP是无状态的请求,创建一个会话需要保持必须需要身份标识。当用户第一次访问,PHP会为用户创建一个唯一的sessionid,并将sessionid通过cookie发送给浏览器,并在服务器的临时文件创建一个以sessionid为名的文件用来保存这个sessionid保...
最近在公司开发一个新的项目假设项目域名是a.com,需要接入b.com的单点登陆系统。(1).首先我们会在a.com的登陆页面用iframe引入b.com来显示登陆界面,实际上登陆验证操作都是在b.com上面(2).当b.com验证通过,会在前端ajax请求a.com的回调地址,这个回调地址目的就是...
在编写多进程的实例中我在每个进程中使用如下代码://调用等待信号的处理器 while (true) { pcntl_signal_dispatch(); }开启5个进程,cpu直接100%修正之后的代码://调用等待信号的处理器 while&...
【一】.迭代器迭代是指反复执行一个过程,每执行一次叫做一次迭代。比如下面的代码就叫做迭代:1. <?php 2. $data = ['1', '2', &...
php7.1引入了PHP异步信号处理函数pcntl_async_signals() 来处理阻塞问题。在php7之前信号处理方式有2种,第一种是基于ticks来每执行一行代码来触发执行信号监听,第二种是直接while(true){ //监听信号 }第一种方式如果某行的代码阻塞时间较长会影响...