理解抽象类最快的方法就是使用场景,最近在看布尔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(){ } }
本篇文章不是讲解如何用.net开发自己的dll然后PHP通过com调用。主要记录PHP官方支持的DOTNET 基本语法如下:$obj = new DOTNET("assembly", "classname")a...
php多进程应用场景主要是非web端,fpm下是不支持多进程的,非类linux操作系统都不支持,请在cli模式使用.可以使用多进程做任务分发,批量计算,批量文件处理,批量爬虫,网络运维等等。下面看一份简单的入门demo//创建子进程 $pid=pcntl_fork(); //返回-1,创建失败,不...
在一个正式项目中操作人员提交239个产品信息进行保存,但是系统却提示没有提交239个产品,于是开启错误信息,显示如下:Warning: Unknown: Input variables exceeded 1000. To incr...
xmlrpc协议是通过http请求xml数据进行通信。webservice中和它相同的是soap。soap调用的确很简单,但是创建wsdl太繁琐,效率低下。xmlrpc很好的解决这个问题。(1).创建xmlrpc服务端(求和函数api)function getSum($method,$ar...
面试中PHP面试官会问调用一个不存在的方法,如何知道是哪个文件哪行调用的?假设方法是getWorkLoad()回答1:开启PHP错误输出,PHP会输出Fatal error: Call to undefined function getWorkLoad() in D:\wwwroot\thinkpa...
主要原理是通过PHP创建多个子进程,在子进程中发送进程闹钟信号,然后再监听闹钟信号中继续发送闹钟信号。同时通过父进程设置非阻塞运行。代码如下:<?php /** * 订单任务 */ class Order { &n...