一个神奇的PHP框架:Phalcon 之初识

前言

公司的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

时间: 2024-10-17 16:21:15

一个神奇的PHP框架:Phalcon 之初识的相关文章

一个神奇的PHP框架:Phalcon 之编译安装

前言 CentOS7下升级PHP到最新版本以及编译安装phalcon框架,看相关文档无数遍,自己尝试编译安装之后才理解的更深,编译步骤以及碰到的问题做个简单的记录 php-7.0.11编译安装 1.下载php-7.0.11源码 http://php.net/downloads.php#v7.0.11 2.依赖开发包 yum install gcc gcc-c++ libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel l

SpringMVC 框架系列之初识与入门实例

SpringMVC 框架系列之初识与入门实例 1.SpringMVC 概述 (1).什么是 MVC:Model-View-Control Control 层属于框架性质,完成的主要工作是:封装 web 请求为一个数据对象.调用业务逻辑层来处理数据对象.返回处理数据结果及相应的视图给客户端. (2).什么是 SpringMVC Spring mvc 和 Struts2 都属于表现层的框架,是 Spring 框架的一部分,Spring 框架的 Control 层的核心是 DispatcherServ

一个神奇的递推公式--转自2108

志远兄发现了一个神奇的递推公式, 某些递推的题目可以看作, 一个个上三角阵, 而问题的解为(1,1) 至 (n,n) 的路径个数, 废话不多说, 上题上代码 以下转自http://www.cnblogs.com/--ZHIYUAN/p/5971367.html 小兔的棋盘 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9447    A

选择一个合适的PHP框架

选择一个合适的PHP框架 亚马逊每年都会通过投票选出最流行的PHP框架排行榜,这里是2015年的排行情况: 2015年PHP框架排行榜 那么,我们选择的范围也就是这些了. Laravel Laravel 官方网站 国内镜像 中文文档 博客园相关文章 枪打出头鸟! 既然是新手选择,自然是按排名排序啦. 这玩意以绝对优势排名第一,而且从上面排名结果页面看来,至少去年(2014年)它也是排第一的. 反正我跟他不熟,暂时保持中立. 还没有安装上,但是从官方文档来看还是比较麻烦,对于拥有VPS的人可能比较

Python学习 - 编写一个简单的web框架(二)

在上一篇日志中已经讨论和实现了根据url执行相应应用,在我阅读了bottle.py官方文档后,按照bottle的设计重写一遍,主要借鉴大牛们的设计思想. 一个bottle.py的简单实例 来看看bottle是如何使用的,代码来自http://www.bottlepy.org/docs/0.12/index.html: from bottle import route, run, template @route('/hello/<name>') def index(name): return t

来,咱们自己写一个Android的IOC框架!

到目前位置,afinal开发框架也是用了好几个月了,还记得第一次使用注释完成控件的初始化和事件绑定的时候,当时的心情是多么的兴奋- -代码竟然可以这样写!然后随着不断的学习,也慢慢的对IOC框架和注解反射等东西有了一点简单的了解,之前的一篇文章简单的介绍了一下Java的反射机制,今天的文章,就完成一个简单的,基于IOC的小Demo,让大家慢慢的对IOC有一点简单的了解. 首先,什么是IOC呢? 控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来

Android 上的 制表符(tab) —— 一个神奇的字符 (cocos2dx crash)

今天测试发现了游戏的一个问题,系统邮件,如果发了tab,在android上一打开邮件内容就会crash.而且他们很确定是tab的问题. 凭我多个月的经验(确实没多年...)来看,从来没听说在android上会因为一个tab崩溃,而且如果有这个问题,肯定会有很多人遇到,估计早就吵翻天了,搜索了一下,什么可用信息都没有. 于是写个测试工程测试了一下,分别在mac下和windows下,用文本编辑工具编辑了4个txt文档,utf有bom和无bom,内容是" tab abcd ",发现都能正常显

Android 上的 制表符(tab) —— 一个神奇的字符 (二)

接到上回的说,主要是上回那个问题,我觉得是android的bug,黎叔觉得是cocos2dx的bug,叫我去提交bug.所以我又继续研究了下. 上回说到会调用java层的函数去创建一个image,然后作为纹理设置给精灵,在那个地方crash了,此处代码如下: public static void createTextBitmapShadowStroke(String pString, final String pFontName, final int pFontSize, final float

Voovan 是一个高性能异步网络框架和 HTTP(Java)

Voovan 是一个高性能异步网络框架和 HTTP 服务器框架,同时支持 HTTP 客户端抓取.动态编译支持.数据库访问封装以及 DateTime.String.Log.反射.对象工具.流操作.文件操作.异步双向通道等功能.旨在提供可靠.方便.可单元测试的代码.它是一个无任何依赖的独立工具包,希望能够方便广大开发者快速的实现应用. 作者:@愚民日记 地址:http://git.oschina.net/helyho/Voovan http://www.oschina.net/news/80909/