首先个人认为无论是什么业务,性能瓶颈不主要在程序。一味追求程序的极致性能反而是不理性的。数据库、物理机器配置、磁盘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里,它将用于加载控制器和模型类。例如,我们可以为控制器注册一个或多个目录来增加应用程序的灵活性的。
代码:
配置依赖注入(DI):use Phalcon\Loader;
$loader = new Loader();
$loader->registerDirs(
[
“./app/controllers/”,
“./app/models/”,
]
);
$loader->register();
服务容器是一个全局存储的将要被使用的应用程序功能包。每次框架需要的一个组件时,会请求这个使用协定好名称的服务容器。因为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锤锤