《3分鐘快速入門php高性能框架Phalcon》要點:
本文介紹了3分鐘快速入門php高性能框架Phalcon,希望對您有用。如果有疑問,可以聯系我們。
相關主題:phalcon教程
Phalcon 是開源、全功能棧、使用 C 擴展編寫、針對高性能優化的 PHP 框架.開發者不需要學習和使用 C 語言的功能, 因為所有的功能都以 PHP 類的方式暴露出來,可以直接使用.Phalcon 也是松耦合的,可以根據項目的需要任意使用其他對象.Phalcon是一套實現MVC架構的高性能PHP應用程序框架.
初始版本發布于2012年11月,開放源代碼并基于BSD授權條款.與其他大部分的PHP框架不同,Phalcon是以擴展的方式以C語言所編寫,因此Phalcon的執行速度高過其他PHP框架,并且消耗更少的資源,根據官方的測試,Phalcon是目前世界上速度最快的PHP框架, 沒有之一.
首先個人認為無論是什么業務,性能瓶頸不主要在程序.一味追求程序的極致性能反而是不理性的.數據庫、物理機器配置、磁盤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項目MVC模式的官方推薦布局(Apache環境):
-------------/ #網站根目錄#
------------app #應用目錄#
------------controllers #控制器目錄#
----------IndexController.php
------------models #存放數據庫模型文件#
------------views #存放視圖文件#
----------index
--------index.html
------------config #配置文件#
------------public #公共靜態資源#
----------js
----------css
----------images
------------index.php #單入口引導文件#
------------.htaccess #rewrite 規則#
首先 我們打開.htaccess 內容如下:
AddDefaultCharset UTF-8
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond $1 !^(index\.php|public)
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>
上面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();
服務容器是一個全局存儲的將要被使用的應用程序功能包.每次框架需要的一個組件時,會請求這個使用協定好名稱的服務容器.因為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這個都是可以的.
一個簡單控制器文件應該如下面這樣的;
<?php
#引用Phalcon基類,別問類在哪里 Phalcon是封閉的#
use Phalcon\Mvc\Controller;
#繼承他#
class IndexController extends Controller
{
public function indexAction()
{
}
}
}
首先我們需要在di中注入我們的視圖組件,當然視圖組件也是可以被單獨使用的.
代碼如下:
<?php
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呢?
代碼:
<?php
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://域名/控制器名/方法,如:http://192.168.1.1/index/index.html,就會打印出 Hello Word !正如你所看見的Phalcon就是這么簡單!
PS:本文來自wuli錘錘
維易PHP培訓學院每天發布《3分鐘快速入門php高性能框架Phalcon》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/9073.html