Seagull PHP框架学习教程之二
在使用Seagull框架开发项目之前,你需要了解以下基本概念:
module(模块,我在这边翻译为模块,各人说法不一样,无关重要),在Seagull内,它的概念是指对某个项目功能的一种逻辑上的分组。一个模块是 将某个项目内那些相关的功能组合在一起。以一个简单网售的站点为例,我们可以把项目大致分成用户模块,订单模块,支付模块。比如用户模块可能会包含所有和 站点用户相关的功能,包括用户资料,用户偏好,用户权限,甚至还有用户角色这些功能,所有和用户管理相关的功能都可以放在这个模块内。把项目划分为模块最 简单的理由是把复杂的问题简单化,还有就是让彼此不相关的功能在一定程度上相互独立,借用一句软件工程的话讲是达到“高内聚,低藕合”目的。在 Seagull中,一个模块是由一个或多个manager组成的。那么什么是manager呢?
manager,简单的说就是一个页面控制对象,它把某个业务相关的或某个实体相关的操作(或动作)组合在一起。比如说一个用户实体,会有添加,删除,修 改用户等动作,所以我们就需要一个user manager将这些相关的动作放在一起(你也可以从软件工程的角度理解成是“高内聚”);再比如,购物车这个业务逻辑,肯定有添加货物,从购物篮去掉货 物,修改货物订购数量等相关的操作,这也需要一个shopcart manager。也就是说一个manager可以包含一个或多个动作。事实上Seagull内这些动作是有一个专有的名词,就是下面我们要介绍的 action,当然你也可以把它当成event(事件)。
action,Seagull认为用户在客户端(一般指浏览器)的每一次请求,如一个按钮的单击,表单的提交,超链接的跳转,都是为了执行一个或多个动 作。Seagull的action就是由此而定义的,每一个action完成一项工作或任务。从代码层面上讲,它不过是manager类中的一个 method(方法),这个方法组织了那些用来完成某项工作或任务的代码。对于用户的一次请求,你可以通过执行一个action来完成用户请求的操作,也 可以执行一串的action来协作完成一项复杂的任务或者在任务完成后进入到某个状态以便用户继续操作。由于它是对应于用户的请求,或者说它是被用户触发 时才被调用,所以你也可以把它当做event,事实上seagull在涉及到observer时就是使用了event的概念。
module,manager,action三者的关系是,一个module是由一个或多个manager组成,而一个manager是由一个或多个 action组成。默认情况下,这三者的命名要遵守一定的规范,module的名称要全部用小写字母的一个单词,最好能见名知意,也不要太长。 manager也需要一个单词,不过第一个字母要大写,并且以Mgr做后缀。action的名称也是需要一个单词,当然也可以是多个单词,不过如果只是一 个单词就全部小写,如果是多个单词最好不要用下划线隔开,而要采用骆驼式命名法,并且以_cmd_为前缀,以和其它方法区别。
从这里开始你就可以使用Seagull进行开发了,你已经掌握了Seagull中唯一的这么几个比较重要的概念了,除此之外,Seagull没有太多太繁 杂的概念,所以只要你有PHP基础,或PHP编辑经验,你就可以出发了,是不是觉得很简单,事实也如此,选择Seagull的一个理由是它容易上手,整个 框架没有太多让人觉得高深莫测的概念,有的是实用的工具和规范以及开放的架构和灵活的配置系统。
事实上,你已经有了足够的知识来使用Seagull开发了,而且由于你选择了Seagull框架,开发时你节省了很多时间,你不用去考虑配置连接数据库的 事情,Seagull已经为你准备好了;你也不用为了性能考虑缓存的事情,因为Seagull也为你备好了;你要发邮件,还苦于不同的服务器使用不同的 mail后端(或后台,如postfix,sendmail),需要写一堆类来处理,放心吧,Seagull为你准备好了;要上传图片并生成相应的缩略 图,甚至要做一些修改,比如换个画布什么的,复杂吗?放心吧Seagull也准备好了......那还等什么?试试创建一个模块看看吧!不过在此之前,我 还是要带你从文件系统的层面认识一下一个Seagull模块到底包含了些什么?
以下为某个模块的文件目录结构图
│ conf.ini //此模块的配置文件
├─blocks //此目录用以保存此模块相关的block类,至于什么是block,在后继章节中将会解释
├─classes //此目录保存此模块的manager类和observer
│ └─observers //此模块提供的observer类,一般是在某个特定event(action)事件发生后被执行
├─data //一系列sql文件
├─lang //语言文件
├─templates //模板文件
└─tests //单元测试相关文件
└─files
默认情况下,Seagull中所有的模块都放在module目录下,包括Seagull提供的核心模块,你自己开发的模块也都是放在这个目录下。在你习惯使用Seagull框架进行项目开发后,你所需要做的工作就是为Seagull开发一个个模块,并将它们放到这个目录下。下一节会告诉你如何创建一个模块。
Seagull PHP框架学习教程之二相关推荐
- SAP HANA Cloud 学习教程之二: 如何往SAP BTP 上 HANA Cloud 实例的数据库表里插入数据
这个教程的前一篇文章,SAP HANA Cloud 学习教程之一: 如何在 SAP BTP 上创建 SAP HANA Cloud 实例,我们已经成功在 SAP BTP HANA Cloud Servi ...
- STM32CubeMX学习教程之二:GPIO输入之外部中断
完整源码下载: https://github.com/simonliu009/STM32CubeMX-GPIO-EXIT 本篇主要讲述GPIO外部中断输入检测,实际物理输入方式是按键,但是实际上更适合 ...
- 乐鑫代理-启明云端分享ESP32系列教程之二:Linux搭建esp-idf环境
提示:此教程依据乐鑫官方的ESP32入门教程总结而来,仅供个人参考学学习,如有错误,欢迎批评指正.乐鑫官方参考: 乐鑫官方文档地址 1.搭建esp-idf环境 1.1安装虚拟机与Ubuntu 未安装请 ...
- SAP UI5 初学者教程之二:SAP UI5 的引导过程(Bootstrap) 试读版
Jerry 从 2014 年加入 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,曾经在 SAP 社区和"汪子熙"微信公众号上发表过多篇关于 SAP U ...
- 【SAP PO】SAP PO 接口配置完整教程之二REST服务对接
SAP PO 接口配置完整教程之二REST服务对接 1.了解服务协议 1.1.服务通讯协议 1.2.具体接口协议 1.3.接口服务测试 2.PO端接口配置 2.1.PO端ESR配置 2.2.PO端IB ...
- STL快速入门学习教程之map的简单使用
STL快速入门学习教程之map的简单使用 map是STL中的一个关联容器,它以一对一的数据进行整理(第一个数值称为关键字,且这个关键字只能在map中出现一次,第二个数值称为前关键字的值),正是由于这种 ...
- NVIDIA Jetson TX1 系列开发教程之二:刷机与开发前准备
NVIDIA Jetson TX1 系列开发教程之二:刷机与开发前准备 转载请注明作者和出处:http://blog.csdn.net/u011475210 嵌入式平台:NVIDIA Jetson T ...
- ET6.0服务器框架学习笔记(二、一条登录协议)
ET6.0服务器框架学习笔记(二.一条登录协议) 上一篇主要记录ET6.0的服务器启动功能,本篇主要记录ET6.0完整的一条协议,从配置到生成协议数据,到从客户端发送给服务端,再发送回客户端的流程 文 ...
- 滴滴Booster移动APP质量优化框架 学习之旅 二
推荐阅读: 滴滴Booster移动App质量优化框架-学习之旅 一 Android 模块Api化演练 不一样视角的Glide剖析(一) 续写滴滴Booster移动APP质量优化框架学习之旅,上篇文章分 ...
最新文章
- HANA 数据库备份hang住的解决办法
- Linux System Programming --Chapter Six
- 【OpenCV环境配置】Xcode+OpenCV+pkg-config
- OpenCV实现简单人脸检测
- 02.vs2015编译qt动态库
- UVA10405 Longest Common Subsequence【LCS+DP】
- ios UISearchController
- 再次思考Z = X+Y,Z = XY的概率密度求解
- 测试环境搭建-7:安装loadrunner提示此计算机上缺少vc2005_sp1_with_atl_fix_redist解决方法
- Linux创翼拨号上网,创翼客户端下载(网络拨号工具) v4.11.4.731 最新版_数码资源网...
- Python3网络爬虫教程7——SSL数字证书
- 图片怎么转换成png格式?
- GIS空间分析(五)—— 位置与几何关系分析
- 稀疏数组练习demo 数据结构和算法
- android 查看cpu 工具6,Android 之CPU监控命令
- html写出带有表格标题的三行三列表格
- 【Linux】Linux学习(三)常用基本命令(一)
- MySql 8.0.19安装
- 浅谈互联网DD攻击和CC攻击
- ElasticSearch(全文检索服务的安装和使用)