PhalAPI学习笔记拓展篇 ———ADM模式中NotORM实现简单CURD

  • 前言
  • 内容
  • ADM模式
    • ADM简单介绍
  • 准备工作
  • PhalAPI提供的CURD操作方法
  • 业务实现
  • 结束语

前言

公司业务需要转学PHP,而PHP中一个功能强大且生态链完整的PHP接口框架 PhalAPI
值得大家去学习,本学习笔记持续更新!
虽然官方文档写的十分明白,以及CSDNPhalAPI框架内容也少之又少。
因此,以自我踩坑为基础,提供一个更为精简的学习笔记,本学习笔记将会省略部分安装及简单操作。

内容

本期内容我们来学习一下,如何在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相关推荐

  1. 极客HTTP协议学习笔记破冰篇(1-7)

    极客HTTP协议学习笔记破冰篇(1-7) 前言 各篇章笔记链接 一.学习笔记 1.HTTP的前世今生 2.HTTP是什么 3.与HTTP相关的各种概念(上) 4.与HTTP相关的各种概念(下) 5.常 ...

  2. MySQL学习笔记-基础篇1

    MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...

  3. MySQL学习笔记-基础篇2

    MySQL学习笔记-基础篇2 目录 MySQL学习笔记-基础篇2 8.子查询 8.1 需求分析与问题解决 8.1.1 实际问题 8.1.2 子查询的基本使用 8.1.3 子查询的分类 8.2 单行子查 ...

  4. Redis学习笔记②实战篇_黑马点评项目

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...

  5. [mmu/cache]-ARM MMU的学习笔记-一篇就够了

    ★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM cache的学习笔记-一 ...

  6. Vue学习笔记进阶篇——多元素及多组件过渡

    本文为转载,原文:Vue学习笔记进阶篇--多元素及多组件过渡 多元素的过渡 对于原生标签可以使用 v-if/v-else.但是有一点需要注意: 当有相同标签名的元素切换时,需要通过 key 特性设置唯 ...

  7. C# 学习笔记入门篇(上)

    文章目录 C# 学习笔记入门篇 〇.写在前面 Hello World! 这篇学习笔记适合什么人 这篇学习笔记到底想记什么 附加说明 一.命名空间 "进入"命名空间 嵌套的命名空间. ...

  8. R语言学习笔记——入门篇:第一章-R语言介绍

    R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...

  9. R语言学习笔记——高级篇:第十四章-主成分分析和因子分析

    R语言 R语言学习笔记--高级篇:第十四章-主成分分析和因子分析 文章目录 R语言 前言 一.R中的主成分和因子分析 二.主成分分析 2.1.判断主成分的个数 2.2.提取主成分 2.3.主成分旋转 ...

最新文章

  1. Resource通配符路径 ——跟我学spring3
  2. 在enable mmu之前可以使用mmu了
  3. Coursera自动驾驶课程第1讲:Welcome to the self-driving cars specialization
  4. ruby在类中访问@,类外访问调用方法
  5. 教练我想学python_教练,我想学Python:(3)列表和切片,边学习边刷leetcode,三,与,边学边,LeetCode...
  6. Linux 工具套件 —— binutils、readelf
  7. SCCM 2012 简体中文正式版 部署文档 01 环境说明
  8. cf12E Start of the season(构造,,,)
  9. python结束函数_python函数结束
  10. ksearch系统开发过程中遇到的KFC性能问题
  11. Spring Security 密码加密器 Pbkdf2PasswordEncoder 、 BCryptPasswordEncoder
  12. C语言如何获取ipv6地址
  13. 小程序完整demo推荐:东航旅行;预订酒店,机票(适用1221)
  14. Python处理空间地理数据
  15. PDF怎么合并?教你2个免费一键合并PDF的方法
  16. 蓝桥杯嵌入式国赛 ---- TRDO TRAO 光敏电阻
  17. iost 私有链搭建与学习
  18. qml 鼠标点击_qml中设置鼠标样式
  19. vue+echarts实现中国地图
  20. 计算机二级备考笔记_操作题

热门文章

  1. Siney's BLOG - 我也来分析魔兽世界-场景组织
  2. 怎么隐藏服务器真实IP地址?
  3. 织梦cms内容采集视频教程
  4. 对抗样本生成算法复现代码解析:FGSM和DeepFool
  5. 电脑ip地址错误,网络无法连接怎么一键解决?
  6. 7-2 愿天下有情人都是失散多年的兄妹 (25 分)
  7. edge浏览器整理收藏夹 找不到收藏夹
  8. 机器人建模中移动关节如何建立坐标系_解析:四轴机器人和六轴机器人有什么区别?---徕深科技...
  9. c语言模拟走迷宫课程程序设计报告,《C语言程序设计》走迷宫游戏程序设计.doc...
  10. 【metahumanUE】虚幻引擎面捕动捕调研