热门标签 | 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锤锤


推荐阅读
  • PHP自学必备:从零开始的准备工作与工具选择 ... [详细]
  • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
  • php从哪里得到框架(2023年最新分享)
    导读:本篇文章编程笔记来给大家介绍有关php从哪里得到框架的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、如何用PHP制 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • XAMPP 遇到 404 错误:无法找到请求的对象
    在使用 XAMPP 时遇到 404 错误,表示请求的对象未找到。通过详细分析发现,该问题可能由以下原因引起:1. `httpd-vhosts.conf` 文件中的配置路径错误;2. `public` 目录下缺少 `.htaccess` 文件。建议检查并修正这些配置,以确保服务器能够正确识别和访问所需的文件路径。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在本文中,我们将为 HelloWorld 项目添加视图组件,以确保控制器返回的视图路径能够正确映射到指定页面。这一步骤将为后续的测试和开发奠定基础。首先,我们将介绍如何配置视图解析器,以便 SpringMVC 能够识别并渲染相应的视图文件。 ... [详细]
  • 本文目录一览:1、php月薪多少合适2、php ... [详细]
  • 一、背景这段时间刚好有时间,帮朋友做一个简单的系统管理网站,因为朋友买的空间是虚拟机,支持的PHP版本在5.5以下,所以只好挑一个老框架,为了快速便捷开发,我就选择了ThinkPH ... [详细]
  • sublime php 方法,SublimePHPNinJaManual
    软件简介SublimePHPNinJaManual是Sublime中的函数手册提示,中文,其他语言的可以通过命令生成由来自己因为sublime中没有一个 ... [详细]
  • 原标题:django中ImageField的使用---2020.12.19ImageField的使用笔记今天完善作业写的订单系统,主要是给每一个菜品增加 ... [详细]
  • 本文深入解析了通过JDBC实现ActiveMQ消息持久化的机制。JDBC能够将消息可靠地存储在多种关系型数据库中,如MySQL、SQL Server、Oracle和DB2等。采用JDBC持久化方式时,数据库会自动生成三个关键表:`activemq_msgs`、`activemq_lock`和`activemq_ACKS`,分别用于存储消息数据、锁定信息和确认状态。这种机制不仅提高了消息的可靠性,还增强了系统的可扩展性和容错能力。 ... [详细]
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社区 版权所有