在使用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基本概念相关推荐

  1. Seagull PHP框架学习教程之二

    在使用Seagull框架开发项目之前,你需要了解以下基本概念: module(模块,我在这边翻译为模块,各人说法不一样,无关重要),在Seagull内,它的概念是指对某个项目功能的一种逻辑上的分组.一 ...

  2. RPC 笔记(03)— gRPC 概念、安装、编译、客户端和服务端示例

    1. gRPC 概念 gRPC 是 Google 开源的一款高性能的 RPC 框架.GitHub 上介绍如下: gRPC is a modern, open source, high-performa ...

  3. RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别

    1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...

  4. 数据结构(01)— 算法复杂度概念及常见的复杂度计算

    1. 大 O 表示法 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度.大 O 表示法指出了最糟情况下的运行时间.大 O 表示法在讨论运行时间时, ...

  5. OpenCV 笔记(01)— OpenCV 概念、整体架构、各模块主要功能

    1. OpenCV 概念 图像处理( Image Processing )是用计算机对图像进行分析, 以达到所需结果的技术, 又称影像处理. 图像处理技术一般包括图像压缩, 增强和复原, 匹配.描述和 ...

  6. 用男女朋友关系解释计算机常用概念

    运维方面 很多同学对热备,冷备,云备了解不深,我科普一下 IT 行业各种备份术语.以后别闹笑话了. 假设你是一位女性,你有一位男朋友,于此同时你和另外一位男生暧昧不清,比朋友好,又不是恋人.你随时可以 ...

  7. python中的新式类与旧式类的一些基于descriptor的概念(上)

    python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(n ...

  8. 【SpringMVC】基本概念

    SpringMVC的基本概念 三层架构 我们的开发一般都是基于c/s或者b/s架构.在JavaEE开发中,几乎全都是基于B/S架构开发.在B/S架构中,系统标准的三层架构包括:表现层,业务层,持久层. ...

  9. AIFramework基本概念整理

    AIFramework基本概念整理 本文介绍: • 对天元 MegEngine 框架中的 Tensor, Operator, GradManager 等基本概念有一定的了解: • 对深度学习中的前向传 ...

最新文章

  1. Java NIO原理 图文分析及代码实现
  2. python教程:读取.dcm文件,并转化为.jpg格式
  3. 【CyberSecurityLearning 64】SSRF
  4. GitHub上Java的Bloom Bloom实现
  5. php zip 归档使用工具,PHP 压缩与归档扩展 Zip_编程学问网
  6. wcf分布式构架集群案例解决方案
  7. [Groovy] How to check if element in groovy array/hash/collection/list?
  8. 2012-11-25学习笔记
  9. LambdaLinq
  10. 《延禧攻略》的配色,简直美到爆!
  11. roboto字体android,Android字体设置及Roboto字体使用方法
  12. 微信api接口调用-触发推送微信群聊列表
  13. 移动计算的未来:是什么在推动变革? | 幂集创新
  14. 四位一体数码管介绍、扫描原理、应用电路和共阳共阴码段编写成都电路板设计
  15. 微信java精简版低内存_微信精简版apk下载-微信精简版低内存2016 安卓版_5577安卓网...
  16. 《Mastering OpenCV》--3.Markless AR.无标识式AR (1)
  17. Simple Contrastive Representation Adversarial Learning for NLP Tasks
  18. Spark删除redis千万级别set集合数据
  19. python 报错:UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\xa5‘ in position 65
  20. 视频合并怎么制作?建议收藏这三款软件

热门文章

  1. c语言中变量加1,c语言中,指针加1的情况.指针变量详细介绍
  2. 我和王争学设计模式|抽象工厂
  3. pfamscan 的使用_科学网—[转载]InterProScan的使用教程 - 黄顺谋的博文
  4. 法国大数据:智慧城市中的大数据
  5. 没有大数据就没有智慧城市
  6. html中的注释格式是,html的注释格式是什么
  7. EXCEL表格-VLOOKUP多对一结果匹配方法(通配符)
  8. 计算—六合彩的中奖概率
  9. 神州信息“六合上甲”再获殊荣
  10. 要看就看最好,16万字全网最硬核redis总结,谁赞成,谁反对?(被粉丝疯狂催更,已有人反馈看完专栏拿到大厂offer!!!)