《3分鐘快速入門(mén)php高性能框架Phalcon》要點(diǎn):
本文介紹了3分鐘快速入門(mén)php高性能框架Phalcon,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
相關(guān)主題:phalcon教程
Phalcon 是開(kāi)源、全功能棧、使用 C 擴(kuò)展編寫(xiě)、針對(duì)高性能優(yōu)化的 PHP 框架.開(kāi)發(fā)者不需要學(xué)習(xí)和使用 C 語(yǔ)言的功能, 因?yàn)樗械墓δ芏家?PHP 類(lèi)的方式暴露出來(lái),可以直接使用.Phalcon 也是松耦合的,可以根據(jù)項(xiàng)目的需要任意使用其他對(duì)象.Phalcon是一套實(shí)現(xiàn)MVC架構(gòu)的高性能PHP應(yīng)用程序框架.
初始版本發(fā)布于2012年11月,開(kāi)放源代碼并基于BSD授權(quán)條款.與其他大部分的PHP框架不同,Phalcon是以擴(kuò)展的方式以C語(yǔ)言所編寫(xiě),因此Phalcon的執(zhí)行速度高過(guò)其他PHP框架,并且消耗更少的資源,根據(jù)官方的測(cè)試,Phalcon是目前世界上速度最快的PHP框架, 沒(méi)有之一.
首先個(gè)人認(rèn)為無(wú)論是什么業(yè)務(wù),性能瓶頸不主要在程序.一味追求程序的極致性能反而是不理性的.數(shù)據(jù)庫(kù)、物理機(jī)器配置、磁盤(pán)I/O等也都與其性能息息相關(guān),追求一個(gè)平衡點(diǎn),反而是最穩(wěn)妥的解決方案.當(dāng)然 ,沒(méi)有最牛逼的框架,只有最棒的程序員!
THINKPHP任然是最NB的框架!國(guó)內(nèi)已知應(yīng)用網(wǎng)站:戰(zhàn)旗TV(phalcon+swoole)、斗魚(yú)、全民TV.
為什么要使用框架,框架能帶來(lái)什么? 我個(gè)人總結(jié)使用框架的好處:
1.可以更好的組織代碼和文件夾 代碼易維護(hù)
2.適合團(tuán)隊(duì)開(kāi)發(fā)(新人來(lái)了上去就是干)
3.集成安全防御 sql注射,csrf等
4.集成MVC模式 代碼頁(yè)面分離
5.集成成熟的類(lèi)庫(kù) 方便調(diào)用
6.成熟的社區(qū)維護(hù)
至于怎樣選擇自己合適的框架?只能說(shuō)沒(méi)有合適的框架,聽(tīng)項(xiàng)目經(jīng)理的,讓你干啥你干啥絕對(duì)沒(méi)錯(cuò)!
正如 Phalcon官網(wǎng)所說(shuō),Phalcon不僅關(guān)于性能,我們的目標(biāo)是使其堅(jiān)固,豐富的功能和易于使用!寫(xiě)一個(gè)有情懷的框架真的很棒!
第一步:在百度中搜索Phalcon,進(jìn)入網(wǎng)站,我們點(diǎn)擊網(wǎng)站首頁(yè)的download,目前該框架的最近版本是3.0.
第二步:找到我們的系統(tǒng),這里我建議選用二進(jìn)制的源碼編譯安裝!
第三步:我們根據(jù)網(wǎng)站上的提示,下載該框架托管在github上面的二進(jìn)制源碼,如圖所示(使用git命令時(shí)需要安裝yum install git):
第四步:使用putty連接我們的linux系統(tǒng),在linux系統(tǒng)/usr/local/src/下面輸入步驟三圖片上的命令,稍等片刻.
第五步:源碼下載完畢后會(huì)有一個(gè)cphalcon目錄,我們用命令行切換到/usr/local/src/cphalcon/build.
第六步:用vi編輯器打開(kāi)install文件,按照下圖配置選擇php-config(php安裝位置各有不同),默認(rèn)install沒(méi)有選擇php-config的位置,所以我們要自己動(dòng)手.
第七步:編輯完成,直接執(zhí)行./install 動(dòng)態(tài)編譯加載php擴(kuò)展.
第八步:編譯完成后打開(kāi)php.ini文件,添加phalcon的擴(kuò)展在php.ini中,添加下圖的擴(kuò)展即可.
最后一步php探針驗(yàn)證 !大工告成!
因?yàn)镻halcon是松散耦合的,所以其文件結(jié)構(gòu)是松散的,對(duì)使用者來(lái)說(shuō) 怎么開(kāi)心怎么來(lái).
一個(gè)簡(jiǎn)單的phalcon項(xiàng)目MVC模式的官方推薦布局(Apache環(huán)境):
-------------/ #網(wǎng)站根目錄#
------------app #應(yīng)用目錄#
------------controllers #控制器目錄#
----------IndexController.php
------------models #存放數(shù)據(jù)庫(kù)模型文件#
------------views #存放視圖文件#
----------index
--------index.html
------------config #配置文件#
------------public #公共靜態(tài)資源#
----------js
----------css
----------images
------------index.php #單入口引導(dǎo)文件#
------------.htaccess #rewrite 規(guī)則#
首先 我們打開(kāi).htaccess 內(nèi)容如下:
AddDefaultCharset UTF-8
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond $1 !^(index\.php|public)
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>
上面rewrite的規(guī)則告訴我們,如果請(qǐng)求不是我們?cè)O(shè)置的例外,那么它會(huì)把所有的重定向到index.php?_url=****來(lái)處理.其實(shí)index.php 作為一個(gè)引導(dǎo)文件,它的作用像是十字路口交通警察.它作為應(yīng)用程序的基礎(chǔ),用它來(lái)控制應(yīng)用程序的各個(gè)方面. 在這個(gè)文件中,你可以實(shí)現(xiàn)組件的初始化和應(yīng)用程序的行為.
首先你必須要明白它需要做的三件事: 1.設(shè)置自動(dòng)加載器 .2.配置依賴(lài)注入.(DI) 3.處理應(yīng)用請(qǐng)求.
在這個(gè)index.php里,它將用于加載控制器和模型類(lèi).例如,我們可以為控制器注冊(cè)一個(gè)或多個(gè)目錄來(lái)增加應(yīng)用程序的靈活性的.
代碼:
use Phalcon\Loader;
$loader = new Loader();
$loader->registerDirs(
[
"./app/controllers/",
"./app/models/",
]
);
$loader->register();
服務(wù)容器是一個(gè)全局存儲(chǔ)的將要被使用的應(yīng)用程序功能包.每次框架需要的一個(gè)組件時(shí),會(huì)請(qǐng)求這個(gè)使用協(xié)定好名稱(chēng)的服務(wù)容器.因?yàn)镻halcon是一個(gè)高度解耦的框架(說(shuō)白了沒(méi)規(guī)則就是他媽的亂), Phalcon\Di 作為502強(qiáng)力膠水,促使不同組件的集成,以一個(gè)透明的方式實(shí)現(xiàn)他們一起進(jìn)行工作.
代碼:
use Phalcon\Di\FactoryDefault;
$di = new FactoryDefault();
其目的是初始化請(qǐng)求環(huán)境,并接收路由到來(lái)的請(qǐng)求,接著分發(fā)任何發(fā)現(xiàn)的動(dòng)作;收集所有的響應(yīng),并在過(guò)程完成后返回它們.
代碼:
use Phalcon\Mvc\Application;
$application = new Application($di);
$response = $application->handle();
$response->send();
那么把這些東西組合起來(lái)就是我們index.php 的所有內(nèi)容,如圖所示:
上面這些搞完了 你就基本上可以使用Phalcon這個(gè)框架了!!!
接下來(lái)簡(jiǎn)單介紹下Phalcon Hello world 的實(shí)現(xiàn):
控制器提供了一堆可以被調(diào)用的方法,即:action.action是控制器中用于處理請(qǐng)求的方法.默認(rèn)情況下,全部 控制器public的方法都會(huì)映射到action并且可以通過(guò)URL訪問(wèn).action負(fù)責(zé)解釋請(qǐng)求和創(chuàng)建響應(yīng).其中控制器存放在我們?cè)谝龑?dǎo)文件中注冊(cè)的目錄下,文件的命名格式為(自定義+Controller).php,例如 IndexController.php,adminController.php這個(gè)都是可以的.
一個(gè)簡(jiǎn)單控制器文件應(yīng)該如下面這樣的;
<?php
#引用Phalcon基類(lèi),別問(wèn)類(lèi)在哪里 Phalcon是封閉的#
use Phalcon\Mvc\Controller;
#繼承他#
class IndexController extends Controller
{
public function indexAction()
{
}
}
}
首先我們需要在di中注入我們的視圖組件,當(dāng)然視圖組件也是可以被單獨(dú)使用的.
代碼如下:
<?php
use Phalcon\Mvc\View;
// 注冊(cè)視圖
$di->set(
"view",
function () {
$view = new View();
//設(shè)置視圖目錄
$view->setViewsDir("../app/views/");
//設(shè)置當(dāng)前使用哪個(gè)模版解析引擎
$view->registerEngines(
[
".my-html" => "MyTemplateAdapter",
]
);
// 在這里可以把 自己喜歡的模版引擎拿過(guò)來(lái)用
$view->registerEngines(
[
".my-html" => "MyTemplateAdapter",
".phtml" => "Phalcon\\Mvc\\View\\Engine\\Php",
]
);
return $view;
},
true
);
視圖代表了應(yīng)用程序中的用戶(hù)界面.視圖通常是在 HTML 文件里嵌入 PHP 代碼,這些代碼僅僅是用來(lái)展示數(shù)據(jù). 視圖的任務(wù)是當(dāng)應(yīng)用程序發(fā)生請(qǐng)求時(shí),提供數(shù)據(jù)給 web 瀏覽器或者其他工具.Phalcon\Mvc\View 和 Phalcon\Mvc\View\Simple 負(fù)責(zé)管理你的MVC應(yīng)用程序的視圖(View)層.
當(dāng)某個(gè)控制器已經(jīng)完成了它的周期,Phalcon自動(dòng)將執(zhí)行傳遞到視圖組件.視圖組件將在視圖文件夾中尋找一個(gè)文件夾名與最后一個(gè)控制器名相同,文件命名與最后一個(gè)動(dòng)作相同的文件執(zhí)行.
整個(gè)流程應(yīng)該是這樣的:當(dāng)controllers文件夾下IndexController.php里面的indexAction方法完成了它的邏輯處理之后,那么Phalcon會(huì)自動(dòng)去視圖目錄中尋找與當(dāng)前控制器同名的文件夾index,并加載與其indexAction同名的視圖文件index.(html后綴名是在注冊(cè)視圖的時(shí)候定義的).
那么 如何實(shí)現(xiàn)一個(gè)hello word呢?
代碼:
<?php
use Phalcon\Mvc\Controller;
class IndexController extends Controller
{
public function indexAction()
{
$str='Hello Word';
# 給對(duì)應(yīng)的視圖文件傳遞變量 tp的$this->assign()你懂得!#
$this->view->setVar('str',$str);
}
}
?>
那么Phalcon會(huì)去找對(duì)應(yīng)的views視圖目錄下index文件夾里面的index.html.那么在index.html里面值就會(huì)被訪問(wèn)到(套路和TP一樣的).
最后喜聞樂(lè)見(jiàn)的結(jié)果是當(dāng)你訪問(wèn)了http://域名/控制器名/方法,如:http://192.168.1.1/index/index.html,就會(huì)打印出 Hello Word !正如你所看見(jiàn)的Phalcon就是這么簡(jiǎn)單!
PS:本文來(lái)自wuli錘錘
維易PHP培訓(xùn)學(xué)院每天發(fā)布《3分鐘快速入門(mén)php高性能框架Phalcon》等實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/9073.html