yaf 基本功能介紹(含經常使用類庫)php
composer create-project phpcasts/yaf-skeleton yaf-demo dev-master -vvv
css
加速版:html
composer create-project phpcasts/yaf-skeleton yaf-demo dev-master --repository-url https://packagist.phpcomposer.com -vvv
前端
yaf.use_namespace = true
cd yaf-demo php -S localhost:8080 public/index.php open localhost:8080
應該就能夠看到 Hello World!
了,有興趣的同窗能夠繼續看後面的大概介紹。laravel
yaf.environ = develop
, 生產環境: yaf.environ = production
controllers
,views
,modules
,library
,models
,plugins
是在根 namespaceApp\Services
下,需在 composer.json
的autoload
下的psr-4
配置PSR2
, PSR4
規範. ├── README.md ├── application │ ├── Bootstrap.php // app啓動文件 │ ├── controllers // 默認controller │ │ ├── Error.php // 錯誤controller, 出錯時會調用該文件 │ │ └── Index.php │ ├── constants // 常量定義目錄,按模塊劃分文件 │ │ ├── Forum.php │ │ └── User.php │ ├── library // 框架lib庫, 全部自定的均可以寫到這裏來 │ │ ├── Core │ │ │ ├── Caches │ │ │ ├── Captcha │ │ │ ├── Controllers │ │ │ ├── Databases │ │ │ ├── Http │ │ │ ├── Support │ │ │ ├── Upload │ │ │ ├── Validators │ │ │ └── Views │ │ └── README.md │ ├── models // model目錄 │ │ ├── User.php │ │ └── Forum.php │ ├── modules // 模塊目錄,裏面能夠有多個模塊 │ │ ├── Api // APP接口位置 │ │ ├── Console // 腳本目錄 │ │ ├── Admin // 後臺目錄 │ │ │ ├── Bootstrap.php // Admin的Bootstrap文件,只對Admin生效 │ │ │ ├── controllers // controller 目錄 │ │ │ │ ├── Base.php │ │ │ │ └── Index.php │ │ │ └── views // 模板目錄 │ │ │ ├── index // 業務目錄 │ │ │ │ └── index.phtml │ │ │ └── layout.phtml // 佈局文件 │ │ └── Home // 前端目錄 │ │ ├── controllers │ │ │ ├── Forum.php │ │ │ └── User.php │ │ └── views │ │ ├── user │ │ │ ├── index.phtml │ │ │ └── profile.phtml │ │ └── forum │ │ ├── list.phtml │ │ └── detail.phtml │ ├── plugins // 插件目錄 │ │ └── Init.php │ ├── services // 業務邏輯封裝 │ │ ├── CommonService.php │ │ ├── UserService.php │ ├── tests // 單元測試相關 │ └── views // 單模塊的試圖目錄 │ ├── error │ │ └── error.phtml │ └── index │ ├── index.phtml │ └── tpl.phtml ├── bin │ ├── console │ └── run ├── composer.json ├── composer.lock ├── conf // 配置目錄 │ ├── application.ini │ ├── application.ini.example │ └── routes.php // 經過bootstrap加載 ├── public │ ├── favicon.ico │ ├── index.php // 單入口文件 │ └── assets │ ├── css │ ├── img │ └── js └── storage ├── cache // 緩存目錄 └── logs // 日誌目錄
conf/application.ini
是整個框架的配置文件,默認系統的命名是使用駝峯式的。 用戶自定義的配置通常也寫到這裏便可,使用下劃線分割。git
application
目錄下有一個總的Bootstrap.php
文件,這裏能夠加載全局須要用到的ORM
,Plugins
,Composer
,Route
,Config
等等, 此文件是默認存在的。application/modules
目錄下各個module裏也能夠定義各自的Bootstrap.php
, 在這裏能夠作一些當前模塊的全局處理,好比檢查用戶是否登陸。分三種路由,其中靜態路由是默認路由,也是經常使用路由模式,若是須要其餘特殊處理可使用正則或Rewrite模式。github
Demo:shell
<?php /** * 路由 * * File: routes.php */ return [ // 正則路由 'news' => [ 'type' => 'regex', 'match' => '/news\/([\d]+)/', 'route' => [ 'module' => 'Home', 'controller' => 'News', 'action' => 'detail', ], 'map' => [ //參數 '1' => 'id', ], ], // rewrite路由 'news' => [ 'type' => 'rewrite', 'match' => 'news/:id/', 'route' => [ 'module' => 'Home', 'controller' => 'News', 'action' => 'detail', ], ], // 或 'news' => [ 'type' => 'rewrite', 'match' => 'resource/:c/:a/:id/', 'route' => [ 'module' => 'Home', 'controller' => 'news', 'action' => 'detail', ], ], ];
命名規則: 第一個字母大寫,緊跟後面的必須小寫。class名稱同文件名。json
錯誤: LiveStream.php 正確: Livestream.php
同時支持JSONP返回,只須要在get url時傳入 _callback便可。bootstrap
集成 Laravel
的Eloquent
的ORM, Eloquent
比較強大也比較好用,玩夠一個足矣。 詳細介紹
默認在application/views
下, 若是是多模塊則放到對應的modules下的views裏。 也能夠經過Composer
加載 Laravel
的Blade
或者 Symfony
的Twig
模板引擎, 固然須要在Bootstrap裏初始化加載一下
目前供支持10種格式校驗
$checkRules = [ ['uid,group_id', 'required'], ['phone', 'match', 'pattern' => '/^1[34578]\d{9}[\d,]*$/', 'allowEmpty' => false], ['email', 'email', 'allowEmpty' => false], ['url', 'url', 'allowEmpty' => false], ['repassword', 'compare', 'target' => 'password', 'allowEmpty' => false], ['username', 'length', 'min' => 4, 'max' => 3000, 'allowEmpty' => false], ['status', 'in', 'range' => [0, 1], 'allowEmpty' => false], ['uid,group_id', 'number', 'min' => 1], ['phone', 'mobile', 'range' => [0, 1], 'allowEmpty' => false], ['birthday', 'date', 'format' => 'Y-m-d', 'allowEmpty' => false] ]; $needCheckArr = [ 'email' => $email ]; if (Validator::validator($needCheckArr, $checkRules) !== true) { throw new \Exception('param error', Code::PARAMS_ERROR); }
能夠加載本地類庫,默認在application/library
裏, 也能夠在conf/application.ini
或php.ini的yaf配置裏指定。
能夠本身寫一些插件來知足業務須要, 最後經過application
下的Bootstrap.php
裏的_initPlugin
來調用。
腳本通常放在 application/modules/Console/controllers
目錄下, 寫法和其餘模塊裏controller
的寫法一致。
使用:
php bin/run Test/test // Test 控制器下的test action
日誌使用比較簡單,在須要記錄日誌的電飯鍋加入如下代碼:
use Core\Log; Log::info('日誌標識', ['param1' => $param1, 'param2' => $param2,...]);
看後在命令行下能夠查看:
tail -f storage/logs/2016-11-29.log
PS: 依賴monolog
package
若是配置文件中appliation.dispatcher.throwException
設爲1或true,Yaf會拋異常, 不然則會觸發錯誤。 當Yaf遇到未捕獲異常的時候, 就會把運行權限, 交給當前模塊的Error Controller的Error Action動做, 而異常或做爲請求的一個參數, 傳遞給Error Action. 錯誤頁默認在application/views/error/error.phtml
, 能夠進行自定義處理。
DI 通常經過contructor來注入(依賴注入的一種方式), 補充注入過程
@todo 增長demo
@todo 增長demo
PHPUnit
php bin/console // 查看可用命令 php bin/console make:controller Articles // 建立控制器 php bin/console make:model Articles // 建立模型 php bin/console make:plugin Test // 建立插件