php xampp 安装yaf,yaf 基本功能介绍(含常用类库)

yaf-skeleton

yaf 基本功能介绍(含常用类库)

安装

composer create-project phpcasts/yaf-skeleton yaf-demo dev-master -vvv

加速版:

composer create-project phpcasts/yaf-skeleton yaf-demo dev-master --repository-url https://packagist.phpcomposer.com -vvv

Required

安装YAF扩展 yaf安装

php.ini 配置: 开启命名空间 yaf.use_namespace = true

使用命名空间引入需要的文件

composer

运行

cd yaf-demo

php -S localhost:8080 public/index.php

open localhost:8080

应该就可以看到 Hello World! 了,有兴趣的同学可以继续看后面的大概介绍。

说明

配置环境 开发环境: yaf.environ = develop , 生产环境: yaf.environ = production

默认情况下 controllers,views,modules,library,models,plugins 是在根 namespace

service目录的namespace 是配置在 App\Services 下,需在 composer.json的autoload下的psr-4配置

第三方类库使用Composer安装

开发规范遵循 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 是整个框架的配置文件,默认系统的命名是使用驼峰式的。 用户自定义的配置一般也写到这里即可,使用下划线分割。

Bootstrap

1、application目录下有一个总的Bootstrap.php文件,这里可以加载全局需要用到的ORM,Plugins,Composer,Route,Config等等, 此文件是默认存在的。

2、application/modules目录下各个module里也可以定义各自的Bootstrap.php, 在这里可以做一些当前模块的全局处理,比如检查用户是否登录。

路由

分三种路由,其中静态路由是默认路由,也是常用路由模式,如果需要其他特殊处理可以使用正则或Rewrite模式。

静态路由(默认)

简单(Simple)路由

Supervar路由

Map路由

Rewrite路由

正则(Regex)路由

Demo:

/**

* 路由

*

* 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',

],

],

];

控制器 Controller

命名规则: 第一个字母大写,紧跟后面的必须小写。class名称同文件名。

错误: LiveStream.php

正确: Livestream.php

同时支持JSONP返回,只需要在get url时传入 _callback即可。

ORM

集成 Laravel的Eloquent的ORM, Eloquent 比较强大也比较好用,玩够一个足矣。 详细介绍

视图

默认在application/views下, 如果是多模块则放到对应的modules下的views里。 也可以通过Composer加载 Laravel的Blade或者 Symfony的Twig模板引擎, 当然需要在Bootstrap里初始化加载一下

校验

目前供支持10种格式校验

required

match

email

url

compare

length

in

number

mobile

date

$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, 可以进行自定义处理。

依赖注入(Dependency injection)

DI 一般通过contructor来注入(依赖注入的一种方式), 补充注入过程

@todo 增加demo

事件管理(EventManager)

@todo 增加demo

单元测试

PHPUnit

命令行工具

php bin/console // 查看可用命令

php bin/console make:controller Articles// 创建控制器

php bin/console make:model Articles // 创建模型

php bin/console make:plugin Test// 创建插件

yaf 中文手册

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值