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 // 建立插件