热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

3分钟快速入门php高性能框架Phalcon

>Phalcon是开源、全功能栈、使用C扩展编写、针对高性能优化的PHP框架。PHP类的方式暴露出来
Phalcon 是什么,我们为啥要选择它?

首先个人认为无论是什么业务,性能瓶颈不主要在程序。一味追求程序的极致性能反而是不理性的。数据库、物理机器配置、磁盘I/O等也都与其性能息息相关,追求一个平衡点,反而是最稳妥的解决方案。当然 ,没有最牛逼的框架,只有最棒的程序员!

THINKPHP任然是最NB的框架!国内已知应用网站:战旗TV(phalcon+swoole)、斗鱼、全民TV。

为什么要使用框架,框架能带来什么? 我个人总结使用框架的好处:

1.可以更好的组织代码和文件夹 代码易维护

2.适合团队开发(新人来了上去就是干)

3.集成安全防御 sql注射,csrf等

4.集成 MVC模式 代码页面分离

5.集成成熟的类库 方便调用

6.成熟的社区维护

至于怎样选择自己合适的框架?只能说没有合适的框架,听项目经理的,让你干啥你干啥绝对没错!

正如 Phalcon官网所说,Phalcon不仅关于性能,我们的目标是使其坚固,丰富的功能和易于使用!写一个有情怀的框架真的很棒!

环境搭建:

第一步:在百度中搜索Phalcon,进入网站,我们点击网站首页的download,目前该框架的最近版本是3.0。

第二步:找到我们的系统,这里我建议选用二进制的 源码 编译安装!

第三步:我们根据网站上的提示,下载该框架托管在github上面的二进制源码,如图所示(使用git命令时需要安装yum install git):

第四步:使用putty连接我们的linux系统,在linux系统/usr/local/src/下面输入步骤三图片上的命令,稍等片刻。

第五步:源码下载完毕后会有一个cphalcon目录,我们用命令行切换到/usr/local/src/cphalcon/build。

第六步:用vi编辑器打开install文件,按照下图配置选择php-config(php安装位置各有不同),默认install没有选择php-config的位置,所以我们要自己动手。

第七步:编辑完成,直接执行./install 动态编译加载php扩展。

第八步:编译完成后打开php.ini文件,添加phalcon的扩展在php.ini中,添加下图的扩展即可。

最后一步php探针验证 !大工告成!

手动文件结构布置(也可以用phalcon提供项目构建开发工具):

因为Phalcon是松散耦合的,所以其文件结构是松散的,对使用者来说 怎么开心怎么来。

一个简单的phalcon项目MVC模式的官方推荐布局(Apache环境):

————-/ #网站根目录#

————app #应用目录#

————controllers #控制器目录#

———-IndexController.php

————models #存放数据库模型文件#

————views #存放视图文件#

———-index

——–index.html

————config #配置文件#

————public #公共静态资源#

———-js

———-css

———-images

————index.php #单入口引导文件#

————.htaccess #rewrite 规则#

首先 我们打开.htaccess 内容如下:

AddDefaultCharset UTF-8

RewriteEngine On

RewriteCond $1 !^(index\.php|public)

RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]

上面rewrite的规则告诉我们,如果请求不是我们设置的例外,那么它会把所有的重定向到index.php?_url=****来处理。其实index.php 作为一个引导文件,它的作用像是十字路口交通警察。它作为应用程序的基础,用它来控制应用程序的各个方面。 在这个文件中,你可以实现组件的初始化和应用程序的行为。

首先你必须要明白它需要做的三件事: 1.设置自动加载器 。2.配置依赖注入。(DI) 3.处理应用请求。

设置自动加载器:

在这个index.php里,它将用于加载控制器和模型类。例如,我们可以为控制器注册一个或多个目录来增加应用程序的灵活性的。

代码:

use Phalcon\Loader;

$loader = new Loader();

$loader->registerDirs(

[

“./app/controllers/”,

“./app/models/”,

]

);

$loader->register();

配置依赖注入(DI):

服务容器是一个全局存储的将要被使用的应用程序功能包。每次框架需要的一个组件时,会请求这个使用协定好名称的服务容器。因为Phalcon是一个高度解耦的框架(说白了没规则就是他妈的乱), Phalcon\Di 作为502强力胶水,促使不同组件的集成,以一个透明的方式实现他们一起进行工作。

代码:

use Phalcon\Di\FactoryDefault;

$di = new FactoryDefault();

处理应用请求:

其目的是初始化请求环境,并接收路由到来的请求,接着分发任何发现的动作;收集所有的响应,并在过程完成后返回它们。

代码:

use Phalcon\Mvc\Application;

$application = new Application($di);

$respOnse= $application->handle();

$response->send();

那么把这些东西组合起来就是我们index.php 的所有内容,如图所示:

上面这些搞完了 你就基本上可以使用Phalcon这个框架了!!!

接下来简单介绍下Phalcon Hello world 的实现:

使用控制器:

控制器提供了一堆可以被调用的方法,即:action。action是控制器中用于处理请求的方法。默认情况下,全部 控制器public的方法都会映射到action并且可以通过URL访问。action负责解释请求和创建响应。其中控制器存放在我们在引导文件中注册的目录下,文件的命名格式为(自定义+Controller).php,例如 IndexController.php,adminController.php这个都是可以的。

一个简单控制器文件应该如下面这样的;

#引用Phalcon基类,别问类在哪里 Phalcon是封闭的#

use Phalcon\Mvc\Controller;

#继承他#

class IndexController extends Controller

{

public function indexAction()

{

}

}

}

使用视图:

首先我们需要在di中注入我们的视图组件,当然视图组件也是可以被单独使用的。

代码如下:

use Phalcon\Mvc\View;

// 注册视图

$di->set(

“view”,

function () {

$view = new View();

//设置视图目录

$view->setViewsDir(“../app/views/”);

//设置当前使用哪个模版解析引擎

$view->registerEngines(

[

“.my-html” => “MyTemplateAdapter”,

]

);

// 在这里可以把 自己喜欢的模版引擎拿过来用

$view->registerEngines(

[

“.my-html” => “MyTemplateAdapter”,

“.phtml” => “Phalcon\\Mvc\\View\\Engine\\Php”,

]

);

return $view;

},

true

);

视图代表了应用程序中的用户界面。视图通常是在 HTML 文件里嵌入 PHP 代码,这些代码仅仅是用来展示数据。 视图的任务是当应用程序发生请求时,提供数据给 web 浏览器或者其他工具。Phalcon\Mvc\View 和 Phalcon\Mvc\View\Simple 负责管理你的MVC应用程序的视图(View)层。

当某个控制器已经完成了它的周期,Phalcon自动将执行传递到视图组件。视图组件将在视图文件夹中寻找一个文件夹名与最后一个控制器名相同,文件命名与最后一个动作相同的文件执行。

整个流程应该是这样的:当controllers文件夹下IndexController.php里面的indexAction方法完成了它的逻辑处理之后,那么Phalcon会自动去视图目录中寻找与当前控制器同名的文件夹index,并加载与其indexAction同名的视图文件index.(html后缀名是在注册视图的时候定义的)。

实现Hello word:

那么 如何实现一个hello word呢?

代码:

use Phalcon\Mvc\Controller;

class IndexController extends Controller

{

public function indexAction()

{

$str=’Hello Word’;

# 给对应的视图文件传递变量 tp的$this->assign()你懂得!#

$this->view->setVar(‘str’,$str);

}

}

?>

那么Phalcon会去找对应的views视图目录下index文件夹里面的index.html。那么在index.html里面值就会被访问到(套路和TP一样的)。

最后喜闻乐见的结果是当你访问了http://域名/控制器名/方法,如:,就会打印出 Hello Word !正如你所看见的Phalcon就是这么简单!

PS:本文来自wuli锤锤


推荐阅读
  • 22.Container With Most Water(能装最多水的容器)
    thecontainercontainsthemos ... [详细]
  • 织梦DedeCMSckeditor编辑器通过修改js去除img标签内的width和height样式
    1.找到文件\include\ckeditor\plugins\image\dialogs\image.js2.使用工具美化js代码3.搜索setStyle(width,CKEDI ... [详细]
  • 最近想用js做一个简单的计算器,不过网上的例子好像大部分都是直接从左到右挨个计算,就好像1+2*5,就会先计算1+2,再计算3*5,并没有实现运算符的优先级,这里找到了一种方法实现,来总结一下。不过这 ... [详细]
  • 安全加密C语言库OpenSSL,在Android中服务器和客户端之间的签名验证和数据加密通信等。OpenSSL系列文章:一、AndroidCMake轻松 ... [详细]
  • 文章目录前言必知必会的软件服务器分类机架式服务器塔式服务器刀片式服务器三者的区别虚拟服务器(云服务器)服务器的硬件组成服务器常见的品牌前言本文是循序渐进学linux的第一课,为 ... [详细]
  • mac系统能装三方软件吗 mac怎么安装第三方软件
    mac系统是一种安全系数很高的系统,mac系统能装三方软件吗?部分mac用户在使用第三方渠道下载软件时会出现阻止安装的状况,或者显示安装包破损等,这其实是一种保护机制setup ... [详细]
  • 1、对于List而言,要不然就使用迭代器,要不然就从后往前删除,从前往后删除会出现角标越界。因为我List有两个remove方法,一个是int作为形参(删除指定位置的元素),一个是 ... [详细]
  • 怎么使用提高开发效率的VSCode插件
    这篇文章将为大家详细讲解有关怎么使用提高开发效率的VSCode插件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所 ... [详细]
  • 稀松数组
    稀松数组1.稀松数组什么?在一个数组中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该数组为稀疏数组;如图,一个5*5的数组arr上只有3个有效数值 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • 本文讨论了在PHP中将空格转换为问号的问题,并提供了解决方案。文章指出,空格不是标准的空格,而是特殊的0xC2 0xA0字符。作者尝试使用mb_convert_encoding函数将utf8字符串转换为gbk编码,但未成功。文章建议检查编辑器是否对空格进行了特殊处理,并提供了使用base64_encode函数打印结果的方法。最后,给出了完整的代码示例。 ... [详细]
  • 这座城市多了十只伤心的鸽
    这个作业属于哪个课程2021春软件工程实践|W班(福州大学)这个作业要求在哪里团队第四次作业这个作业的目标设计项目原型、制作项目需求规格说明书团队名称这座城市多了十只伤心的鸽其他参 ... [详细]
  • 前端跨域访问后端数据的方法
    参考链接:https:mp.weixin.qq.coms4G_27oRLSMMYBFvtYZgqcg一、什么是跨域当两个域名的协议、子域名、主域名、端口号中有任意一个不 ... [详细]
  • shell命令四剑客1.grepUnix中用于文本搜索的工具,它能够接受正则表达式和通配符。也是日常开发调试中用的最多的。用于处理每行的文本grep匹配文本通配符 ... [详细]
  • (一)前言:二次开发编辑器neditor(基于百度编辑器ueditor):界面相对于ueditor会更美观.(二)问题描述:最近在公司项目中遇到一个比较奇葩的问题。neidito ... [详细]
author-avatar
斗就斗D_994
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有