PhalAPI学习笔记拓展篇 ———ADM模式中NotORM实现简单CURD
PhalAPI学习笔记拓展篇 ———ADM模式中NotORM实现简单CURD
- 前言
- 内容
- ADM模式
- ADM简单介绍
- 准备工作
- PhalAPI提供的CURD操作方法
- 业务实现
- 结束语
前言
公司业务需要转学PHP,而PHP中一个功能强大且生态链完整的PHP接口框架 PhalAPI
值得大家去学习,本学习笔记持续更新!
虽然官方文档写的十分明白,以及CSDN中PhalAPI框架内容也少之又少。
因此,以自我踩坑为基础,提供一个更为精简的学习笔记,本学习笔记将会省略部分安装及简单操作。
内容
本期内容我们来学习一下,如何在PhalAPI框架上快速应用 ADM模式实现CURD
ADM模式
通俗易懂的话,就是PhalAPI 框架中不采用传统的MVC架构设计模式,采用ADM开发模式!
ADM全称:Api-Domain-Model 传统MVC全称:Model-View-Controller
可见抛弃了传统的 View 层,将Controller改为Api为控制器,由此,开发设计思想产生改变
ADM简单介绍
还是由Api Domain Model层进行拆分
- API (控制器)
- Domain (中心逻辑处理层)
- Model (数据库模型)
层级处理,环环相扣的设计思想
- API控制器只关心Domain层内逻辑处理调用实现而不直接操作Model层!
- Domain只关心对于一些核心的业务核心代码进行逻辑处理,并且直接操作Model 层!
- Model只关心对于数据库表中数据进行处理,只管数据库数据返回!
用简单的话语讲解了关于 ADM的核心思想,那么接下来我们看看如何进行实现把!
准备工作
- 一个数据库
- 拥有一个API层的PHP文件
- 拥有一个Domain层的PHP文件
- 拥有一个Model层的PHP文件
拥有了这些我们就可以开始实现ADM下的CURD操作啦!
PhalAPI提供的CURD操作方法
Insert(插入)
- insert()
- insert_id()
- insert_multi()
- insert_update()
Update(修改)
- update()
- updateCounter()
- updateMultiCounters()
Select(查询)
- queryAll()
delete(删除)
- delete()
业务实现
Model
namespace App\Model;use PhalApi\Exception;
use PhalApi\Model\NotORMModel as NotORM;class Operation extends NotORM
{protected function getTableName($id){return "operation";}public function csdn_insert(){$array = array("path" => "/csdn" ,"project" => "csdn");return $this->getORM()->insert($array);}public function csdn_mult_insert(){$array = array(array("path" => "/csdn2" ,"project" => "mult_csdn1"),array("path" => "/csdn3" ,"project" => "mult_csdn2"));return $this->getORM()->insert_multi($array);}public function csdn_insert_update(){$unique = array("id"=>"242");$insert = array("path" => "/csdn2","project" => "mult_csdn1");$update = array("path" => "/updateCsdn2");return $this->getORM()->insert_update($unique,$insert,$update);}public function csdn_update(){$updateArray = array("path" => "/csdnUpdate","project" => "csdn");return $this->getORM()->where("id = ?",242)->update($updateArray);}public function csdn_update_add(){return $this->getORM()->where("id = ?",242)->updateCounter("num",1);}public function csdn_update_mult_add(){return $this->getORM()->where("id = ?",242)->updateMultiCounters(array("num"=>1));}public function csdn_queryAll(){$sql = "select * from pp_operation";return $this->getORM()->queryAll($sql);}public function csdn_delete(){return $this->getORM()->where("id = ?",242)->delete();}
}
Domain
namespace App\Domain\Operation;use App\Model\Operation;class OpaerationDomain
{var $model;public function __construct(){$this->model = new Operation();}public function csdn_insert(){return $this->model->csdn_insert();}public function csdn_mult_insert(){return $this->model->csdn_mult_insert();}public function csdn_insert_update(){return $this->model->csdn_insert_update();}public function csdn_update(){return $this->model->csdn_update();}public function csdn_update_add(){return $this->model->csdn_update_add();}public function csdn_update_mult_add(){return $this->model->csdn_update_mult_add();}public function csdn_queryAll(){return $this->model->csdn_queryAll();}public function csdn_delete(){return $this->model->csdn_delete();}
}
API
namespace App\Api\Opaeration;use PhalApi\Api;
use App\Model\Operation as Table;
use App\Domain\Operation\Permission\OpaerationPermissionDomain as PermissionDomain;
class Opaeration extends Api
{var $domain;var $permissionDomain;public function __construct(){$this->domain = new Table();$this->permissionDomain = new PermissionDomain();}public function csdn_insert(){return $this->domain->csdn_insert();}public function csdn_mult_insert(){return $this->domain->csdn_mult_insert();}public function csdn_insert_update(){return $this->domain->csdn_insert_update();}public function csdn_update(){return $this->domain->csdn_update();}public function csdn_update_add(){return $this->domain->csdn_update_add();}public function csdn_update_mult_add(){return $this->domain->csdn_update_mult_add();}public function csdn_queryAll(){return $this->domain->csdn_queryAll();}public function csdn_delete(){return $this->domain->csdn_delete();}
}
就完成了ADM设计模式,同时使用了基础的NotORM的CURD方法完成该功能!
结束语
关于 PhalAPI学习笔记拓展篇 ———ADM模式中NotORM实现简单CURD 就讲到这里,对你有帮助的话!
- 点赞
- 收藏
谢谢你的观看!
PhalAPI学习笔记拓展篇 ———ADM模式中NotORM实现简单CURD相关推荐
- 极客HTTP协议学习笔记破冰篇(1-7)
极客HTTP协议学习笔记破冰篇(1-7) 前言 各篇章笔记链接 一.学习笔记 1.HTTP的前世今生 2.HTTP是什么 3.与HTTP相关的各种概念(上) 4.与HTTP相关的各种概念(下) 5.常 ...
- MySQL学习笔记-基础篇1
MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...
- MySQL学习笔记-基础篇2
MySQL学习笔记-基础篇2 目录 MySQL学习笔记-基础篇2 8.子查询 8.1 需求分析与问题解决 8.1.1 实际问题 8.1.2 子查询的基本使用 8.1.3 子查询的分类 8.2 单行子查 ...
- Redis学习笔记②实战篇_黑马点评项目
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...
- [mmu/cache]-ARM MMU的学习笔记-一篇就够了
★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM cache的学习笔记-一 ...
- Vue学习笔记进阶篇——多元素及多组件过渡
本文为转载,原文:Vue学习笔记进阶篇--多元素及多组件过渡 多元素的过渡 对于原生标签可以使用 v-if/v-else.但是有一点需要注意: 当有相同标签名的元素切换时,需要通过 key 特性设置唯 ...
- C# 学习笔记入门篇(上)
文章目录 C# 学习笔记入门篇 〇.写在前面 Hello World! 这篇学习笔记适合什么人 这篇学习笔记到底想记什么 附加说明 一.命名空间 "进入"命名空间 嵌套的命名空间. ...
- R语言学习笔记——入门篇:第一章-R语言介绍
R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...
- R语言学习笔记——高级篇:第十四章-主成分分析和因子分析
R语言 R语言学习笔记--高级篇:第十四章-主成分分析和因子分析 文章目录 R语言 前言 一.R中的主成分和因子分析 二.主成分分析 2.1.判断主成分的个数 2.2.提取主成分 2.3.主成分旋转 ...
最新文章
- Resource通配符路径 ——跟我学spring3
- 在enable mmu之前可以使用mmu了
- Coursera自动驾驶课程第1讲:Welcome to the self-driving cars specialization
- ruby在类中访问@,类外访问调用方法
- 教练我想学python_教练,我想学Python:(3)列表和切片,边学习边刷leetcode,三,与,边学边,LeetCode...
- Linux 工具套件 —— binutils、readelf
- SCCM 2012 简体中文正式版 部署文档 01 环境说明
- cf12E Start of the season(构造,,,)
- python结束函数_python函数结束
- ksearch系统开发过程中遇到的KFC性能问题
- Spring Security 密码加密器 Pbkdf2PasswordEncoder 、 BCryptPasswordEncoder
- C语言如何获取ipv6地址
- 小程序完整demo推荐:东航旅行;预订酒店,机票(适用1221)
- Python处理空间地理数据
- PDF怎么合并?教你2个免费一键合并PDF的方法
- 蓝桥杯嵌入式国赛 ---- TRDO TRAO 光敏电阻
- iost 私有链搭建与学习
- qml 鼠标点击_qml中设置鼠标样式
- vue+echarts实现中国地图
- 计算机二级备考笔记_操作题
热门文章
- Siney's BLOG - 我也来分析魔兽世界-场景组织
- 怎么隐藏服务器真实IP地址?
- 织梦cms内容采集视频教程
- 对抗样本生成算法复现代码解析:FGSM和DeepFool
- 电脑ip地址错误,网络无法连接怎么一键解决?
- 7-2 愿天下有情人都是失散多年的兄妹 (25 分)
- edge浏览器整理收藏夹 找不到收藏夹
- 机器人建模中移动关节如何建立坐标系_解析:四轴机器人和六轴机器人有什么区别?---徕深科技...
- c语言模拟走迷宫课程程序设计报告,《C语言程序设计》走迷宫游戏程序设计.doc...
- 【metahumanUE】虚幻引擎面捕动捕调研