Yaf架構安裝指南

來源:互聯網
上載者:User
這篇文章主要介紹了關於Yaf架構安裝指南 ,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

說起PHP架構,很多人的印象都停留在一個由PHP實現的基於MVC的各種功能組合的程式碼封裝。極少有人知道C語言也能寫PHP架構,並且速度比PHP寫的架構快上10倍以上。

Yaf是一款以C語言寫的PHP架構。它以PHP擴充的方式運行架構。只實現了MVC最核心部分的功能:路由、MVC。Yaf核心夠精簡穩定,所以,幾乎不會遇到運行上的問題。風險可控,效能優異。當然,因為簡單,所以,你需要實現DB的封閉、Session的擴充等操作。

身為PHP程式員,對於由亞洲第一程式員:鳥哥,編寫的架構應該不陌生,那麼它有什麼優點呢?

  • C語言開發的PHP架構, 相比原生的PHP, 幾乎不會帶來額外的效能開銷.

  • 所有的架構類, 不需要編譯, 在PHP啟動的時候載入, 並常駐記憶體.

  • 更短的記憶體周轉周期, 提高記憶體利用率, 降低記憶體佔用率.

  • 靈巧的自動載入. 支援全域和局部兩種載入規則, 方便類程式庫共用.

  • 高效能的視圖引擎.

  • 高度靈活可擴充的架構, 支援自訂視圖引擎, 支援外掛程式, 支援自訂路由等等.

  • 內建多種路由, 可以相容目前常見的各種路由協議.

  • 強大而又高度靈活的設定檔支援. 並支援緩衝設定檔, 避免複雜的配置結構帶來的效能損失.

  • 在架構本身,對危險的操作習慣做了禁止.

  • 更快的執行速度, 更少的記憶體佔用.

架構安裝:

一:架構安裝

Yaf擴充首頁:http://pecl.php.net/package/yaf

$ wget http://pecl.php.net/get/yaf-3.0.7.tgz$ tar -zxvf yaf-3.0.7.tgz$ cd yaf-3.0.7$ /path/to/phpize$./configure --with-php-config=/path/to/php-config$ make && make test && make install

tip:

在執行編譯命令/path/to/phpize,命令的時候可能會出現如下錯誤:

Configuring for:PHP Api Version:         20151012Zend Module Api No:      20151012Zend Extension Api No:   320151012Cannot find autoconf. Please check your autoconf installation and the$PHP_AUTOCONF environment variable. Then, rerun this script.

可參考:https://blog.csdn.net/alen_xiaoxin/article/details/80255766,尋找解決辦法。

編譯完成組建擴充之後,修改php.ini,在php.ini檔案末尾加如下配置:

[yaf]yaf.use_namespace = 0yaf.environ = 'product'yaf.cache_config = 0yaf.name_suffix = 1yaf.lowcase_path = 1extension = yaf.so

添加完之後,可查看phpinfo是否存在yaf擴充。

配置說明:

  • yaf.user_namespace 為1是開啟命名空間模式。0關閉。

  • yaf.environ 是預設情況下Yaf讀取的環境配置是什麼。

  • yaf.cache_config 是否快取項目配置。

  • yaf.name_suffix 開啟尾碼。即為1之後,類名將以XxxModel.php、XxxController.php模式載入。

  • yaf.lowcase_path 路徑資訊中的目錄部分都會被轉換成小寫。

二、建立第一個Yaf項目

有兩種建立方式:


  1. 手動建立目錄

  2. 使用Yaf提供的命令列組建目錄

第二種方法可自行到:https://github.com/laruence/php-yaf,下載源碼,因為 Yaf 提供的命令工具沒有隨 Yaf 源碼一起,在該項目下面有一個tools檔案夾,裡面就是命令列工具。

一個典型的目錄結構:

+ public
|- index.php //入口檔案
|- .htaccess //重寫規則
|+ css
|+ img
|+ js
+ conf
|- application.ini //設定檔
+ application
|+ controllers
|- Index.php //預設控制器
|+ views
|+ index //控制器
|- index.phtml //預設視圖
|+ modules //其他模組
|+ library //本地類庫
|+ models //model目錄
|+ plugins //外掛程式目錄

入口檔案:

入口檔案是所有請求的入口, 一般都藉助於rewrite規則, 把所有的請求都重新導向到這個入口檔案。

一個經典的入口檔案piublic/index.php:

<?phpdefine("APP_PATH",  realpath(dirname(__FILE__) . '/../')); /* 指向public的上一級 */$app  = new Yaf_Application(APP_PATH . "/conf/application.ini");$app->run();

重寫規則:

Apache的Rewrite (httpd.conf):

#.htaccess, 當然也可以寫在httpd.confRewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteRule .* index.php

Nginx的Rewrite (nginx.conf):

server {  listen ****;  server_name  domain.com;  root   document_root;  index  index.php index.html index.htm;  if (!-e $request_filename) {    rewrite ^/(.*)  /index.php/$1 last;  }}

設定檔:

在Yaf中, 設定檔支援繼承, 支援分節. 並對PHP的常量進行支援. 你不用擔心設定檔太大造成解析效能問題, 因為Yaf會在第一個啟動並執行時候載入設定檔, 把格式化後的內容保持在記憶體中. 直到設定檔有了修改, 才會再次載入。

一個簡單的設定檔application/application.ini:

[product];支援直接寫PHP中的已定義常量application.directory=APP_PATH "/application/"

控制器:

在Yaf中, 預設的模組/控制器/動作, 都是以Index命名的, 當然,這是可通過設定檔修改的.

對於預設模組, 控制器的目錄是在application目錄下的controllers目錄下, Action的命名規則是"名字+Action"

預設控制器application/controllers/Index.php

<?phpclass IndexController extends Yaf_Controller_Abstract {   public function indexAction() {//預設Action       $this->getView()->assign("content", "Hello World");   }}?>

視圖檔案:

Yaf支援簡單的視圖引擎, 並且支援使用者自訂自己的視圖引擎, 比如Smarty。

對於預設模組, 視圖檔案的路徑是在application目錄下的views目錄中以小寫action名的目錄中。

一個預設Action的視圖application/views/index/index.phtml

<html> <head>   <title>Hello World</title> </head> <body>  <?php echo $content;?> </body></html>

運行:

在瀏覽器輸入你伺服器配置的網域名稱即可:

http://www.yourhostname.com/application/index.php

我是在本地配置的直接把連接埠指向public目錄,所以直接輸入:localhost:8081,即可看到

注意:

如果看不到Hello world,那麼請到伺服器查看PHP的錯誤記錄檔,找出問題在哪裡。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.