yaf的官方文檔
http://www.laruence.com/manual/index.html
- 推薦
http://php.net/manual/en/book.yaf.php
環境
- Apache 2.4.37
- php 7.2.12
yaf配置
- 使用yaf要開啓php的yaf擴展(擴展模塊),下載:http://pecl.php.net/package/yaf
- 我們需要慎重選擇版本,先編寫程序並在瀏覽器中運行,查看Architecture和Thread Safety。Thread Safety爲enable時,選擇TS版本,否則選擇NTS版本。
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
phpinfo();
?>
</body>
</html>
- 下載解壓後,複製php_yaf.dll文件,將其拷貝到php的ext文件夾(主要存放擴展庫)下。
- 打開php配置文件php.ini,Ctrl+F尋找extension,新增一行:
extension=php_yaf.dll
//此處要根據你的php.ini中extension的書寫規則
//或者extension=yaf
- 重啓apache,查看phpinfo(),此時可以看到yaf的配置信息。
- 到此結束。
Yaf定義的常量
常量(啓用命名空間後的常量名) | 說明 |
---|---|
YAF_VERSION(Yaf\VERSION) | Yaf框架的三位版本信息 |
YAF_ENVIRON(Yaf\ENVIRON | Yaf的環境常量, 指明瞭要讀取的配置的節, 默認的是product |
YAF_ERR_STARTUP_FAILED(Yaf\ERR\STARTUP_FAILED) | Yaf的錯誤代碼常量, 表示啓動失敗, 值爲512 |
YAF_ERR_ROUTE_FAILED(Yaf\ERR\ROUTE_FAILED) | Yaf的錯誤代碼常量, 表示路由失敗, 值爲513 |
YAF_ERR_DISPATCH_FAILED(Yaf\ERR\DISPATCH_FAILED) | Yaf的錯誤代碼常量, 表示分發失敗, 值爲514 |
YAF_ERR_NOTFOUND_MODULE(Yaf\ERR\NOTFOUD\MODULE) | Yaf的錯誤代碼常量, 表示找不到指定的模塊, 值爲515 |
YAF_ERR_NOTFOUND_CONTROLLER(Yaf\ERR\NOTFOUD\CONTROLLER) | Yaf的錯誤代碼常量, 表示找不到指定的Controller, 值爲516 |
YAF_ERR_NOTFOUND_ACTION(Yaf\ERR\NOTFOUD\ACTION) | Yaf的錯誤代碼常量, 表示找不到指定的Action, 值爲517 |
YAF_ERR_NOTFOUND_VIEW(Yaf\ERR\NOTFOUD\VIEW) | Yaf的錯誤代碼常量, 表示找不到指定的視圖文件, 值爲518 |
YAF_ERR_CALL_FAILED(Yaf\ERR\CALL_FAILED) | Yaf的錯誤代碼常量, 表示調用失敗, 值爲519 |
YAF_ERR_AUTOLOAD_FAILED(Yaf\ERR\AUTOLOAD_FAILED) | Yaf的錯誤代碼常量, 表示自動加載類失敗, 值爲520 |
YAF_ERR_TYPE_ERROR(Yaf\ERR\TYPE_ERROR) | Yaf的錯誤代碼常量, 表示關鍵邏輯的參數錯誤, 值爲521 |
Yaf配置項
選項名稱 | 默認值 | 可修改範圍 | 更新記錄 |
---|---|---|---|
yaf.environ | product | PHP_INI_ALL | 環境名稱, 當用INI作爲Yaf的配置文件時, 這個指明瞭Yaf將要在INI配置中讀取的節的名字 |
yaf.library | NULL | PHP_INI_ALL | 全局類庫的目錄路徑 |
yaf.cache_config | 0 | PHP_INI_SYSTEM | 是否緩存配置文件(只針對INI配置文件生效), 打開此選項可在複雜配置的情況下提高性能 |
yaf.name_suffix | 1 | PHP_INI_ALL | 在處理Controller, Action, Plugin, Model的時候, 類名中關鍵信息是否是後綴式, 比如UserModel, 而在前綴模式下則是ModelUser |
yaf.name_separator | “” | PHP_INI_ALL | 在處理Controller, Action, Plugin, Model的時候, 前綴和名字之間的分隔符, 默認爲空, 也就是UserPlugin, 加入設置爲"_", 則判斷的依據就會變成:“User_Plugin”, 這個主要是爲了兼容ST已有的命名規範 |
yaf.forward_limit | 5 | PHP_INI_ALL | forward最大嵌套深度 |
yaf.use_namespace | 0 | PHP_INI_SYSTEM | 開啓的情況下, Yaf將會使用命名空間方式註冊自己的類, 比如Yaf_Application將會變成Yaf\Application |
yaf.use_spl_autoload | 0 | PHP_INI_ALL | 開啓的情況下, Yaf在加載不成功的情況下, 會繼續讓PHP的自動加載函數加載, 從性能考慮, 除非特殊情況, 否則保持這個選項關閉 |
- yaf.environ配置環境名稱,本地開發develop、測試環境test、生產環境product。
- 配置除了節之外,節和節之間還有繼承關係。例如[develop : common]就表示develop的配置會繼承common的配置。
[common]
; 通用配置
[product : common]
; 生產環境配置
[test : common]
; 測試環境配置
[develop : common]
; 開發環境配置
- 常用的四個配置選項爲:yaf.environ、yaf.library、yaf.use_namespace、yaf.use_spl_autoload。
- yaf.library是多項目使用同一個類庫時,一次修改多次使用,實現類庫複用。
- 在開啓yaf.cache_config的情況下, Yaf會使用INI文件路徑作爲Key, 這就有一個陷阱,就是如果在一臺服務器上同時運行倆個應用, 那麼它們必須不能使用同一個路徑名下的INI配置文件, 否則就會出現Application Path混亂的問題。 所以, 儘量不要使用相對路徑。
Yaf配置示例
- php.ini文件中做如下配置
;yaf
extension=php_yaf.dll
//此處要根據你的php.ini中extension的書寫規則
;extension=yaf
yaf.environ="product"
- 設置運行環境,在項目中可以通過ini_get(‘yaf.environ’)獲取環境參數,進而取到相應節的配置。
生成框架目錄結構
- 下載:https://github.com/laruence/yaf/tree/php5
- 解壓後打開tools目錄下的cg文件夾,Win+R輸入cmd打開命令行,切換到該目錄下,執行(sample是項目名稱,可自定義):
- 回車後出現“DONE”說明執行成功,此時cg下的output文件中中出現sample項目(初始版yaf):
- 將sample項目剪切到服務器的htdocs目錄下,運行“http://localhost:88(端口號默認80)/sample/index.php”,出現“Hello World! I am Stranger”即爲成功。
HelloWorld
- 作者說:對於Yaf的應用,都應該遵循類似下面的目錄結構。
- 本人對這個內容的每個步驟還不瞭解。
- 第一個程序:http://www.laruence.com/manual/tutorial.firstpage.html