前言

公司的APP响应速度比较慢,公司大神决定使用C语言编写的PHP框架Phalcon 代替原来的框架,响应速度有比较大的提升。以前只是听说过,没有深入的了解过。即然工作中有用到,便花点时间了解了下,你啥都不懂,会被别人鄙视,需要不断的充电补齐自己的短板啊!

第一感受

花了些时间看了phalcon 框架的文档,对这个框架有了整体的一些认识,说下我的一些感受。

1 主体代码C语言编写,执行效率肯定比其它纯PHP编写的框架要高;
2 框架功能大而全,全栈式框架,WEB开发相关的组件都有,组件之间低耦合;
3 对象容器以及依赖注入的神奇使用,简化代码编写;
4 很多组件使用适配器模式,方便自定义开发扩展,只要实现适配器接口即可;
5 安全可靠,对WEB常见漏洞提供了相应解决方案,这对团队开发非常有帮助,想想最近一些脱库事件,还是有些后怕,开发拥有安全意识非常重要;
6 PHQL类SQL数据库查询语言,查询数据非常灵活,感觉这个没啥用;
7 这个框架很灵活,没有固定的范式,开发时可以任意组织代码;
8 提供开发脚手架,枯燥重复的操作有相应的脚本代劳,是我懒人喜爱的:)
9 命令行执行任务控制台
10 事件管理器HOOK机制,这个用起来肯定很爽:)
11 基于角色简单权限管理机制,对于资源权限管理不复杂的应用绝对足够了

框架架构

以前接触过比较多的框架,比如CI,Qeephp,Laravel等,发现大家的实现套路基本上差不多,无外乎在MVC三层架构基础之上做些文章,实现的方式有差异而已。

单入口
通过一个入口处理客户端响应,这个需要设置WEB服务器将所有动态脚本请求转发到单一入口上

路由以及分发器
需要设置路由规则,以及路由对应的处理控制器和方法,找到匹配路由之后,通过分发器转发执行,有一个路由组件和分发器组件实现这2个功能

控制器
用于对客户端请求进行响应,用于连接模型和视图对胶水

模型
业务逻辑层,数据的CRUD操作相关,模型之间的关联关系管理

缓存层
使用适配器模式,后端支持主流的缓存服务,比如memache,redis ,mongodb 等,如果需要使用其它服务,可以自己扩展,实现适配器接口就行了

视图
客户端视图渲染,层次结构,视图继承,支持内置模版以及自定义模版引擎

多语言
支持多语言,这个对公司业务主要是在海外很有帮助,话说自己实现也不难,也就一语言包而已,使用PHP数组就可以了:)

优势

1 功能大而全

2 执行速度快

劣势

1 学习成本高

2 需要安装PHP扩展
3 相比纯PHP框架维护成本大

适合场景

1 需要快速开发且对性能要求比较高

依赖注入

依赖的服务通过注入的方式获得访问,这个是Phalcon 框架的基础,通过依赖注入,各组件之间可以做到低耦合,又能获得其它服务的能力。依赖注入比较绕,初次了解可能会搞的晕头转向,熟悉了之后就好了。Phalcon 文档对依赖注入说的很生动很具体,从问题开始入手,一步一步引导如何实现依赖注入。依赖注入实现原理:创建一个对象容器,注册服务到对象容器,需要访问服务的实例通过对象容器访问服务,不同的语言实现方式不一样。

后记

说的东西很理论,没有相关实践的部分,主要是我只看了文档介绍,还没有实际使用过,使用过程中会碰到什么坑,我现在说不清楚):以后有新系统开发或者业余搞的项目,会尝试使用它!

参考资料

【1】Phalcon官方文档

https://docs.phalconphp.com/en/latest/index.html

https://media.readthedocs.org/pdf/phalcon-php-framework-documentation/latest/phalcon-php-framework-documentation.pdf
【2】Phalcon官方网站

https://phalconphp.com/zh/

【3】Phalcon代码库地址

https://github.com/phalcon

最新文章

  1. Frame动画实战
  2. mysql5.7中文乱码问题的解决,将编码统一改成utf8的方法
  3. 查找练习 hash——出现过的数字 分类: 查找 2015-06-18 17:30 7人阅读 评论(0) 收藏
  4. 可进行JavaScript代码测试与调试的12个网站
  5. openerp学习笔记 webkit 打印
  6. 【转】SendMessage及WPRAME、LPARAME
  7. java图片处理工具类
  8. 剑指Offer_编程题_19
  9. 根据URL地址获取对应的HTML,根据对应的URL下载图片
  10. Echo团队Alpha冲刺随笔 - 第五天
  11. python中map()函数用法
  12. [LeetCode] 438. Find All Anagrams in a String_Easy
  13. LeetCode31.下一个排列 JavaScript
  14. ubuntu下USB口插入USB转TTL查看串口号
  15. Zabbix 监控页面中文乱码
  16. leetcode-819-Most Common Word(词频统计)
  17. agc 027 B - Garbage Collector
  18. android多线程-AsyncTask之工作原理深入解析(下)
  19. 【BZOJ2794】[Poi2012]Cloakroom 离线+背包
  20. IE9 placeholder 不兼容的解决

热门文章

  1. Antenna Placement(二分图的最大匹配)
  2. [Swift通天遁地]七、数据与安全-(16)检测Apple设备是否越狱
  3. Oracle数据库初学者入门教程
  4. JavaScript--如何插入JS
  5. 简单入门构建spark1.6.1源码环境
  6. IIS Express配置多站点同时运行
  7. crontab的使用
  8. ie9以下的浏览器兼容性问题
  9. html5——表单
  10. jQuery——切换toggle