Yaf安装/配置(Windows)

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\ENVIRONYaf的环境常量, 指明了要读取的配置的节, 默认的是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.environproductPHP_INI_ALL环境名称, 当用INI作为Yaf的配置文件时, 这个指明了Yaf将要在INI配置中读取的节的名字
yaf.libraryNULLPHP_INI_ALL全局类库的目录路径
yaf.cache_config0PHP_INI_SYSTEM是否缓存配置文件(只针对INI配置文件生效), 打开此选项可在复杂配置的情况下提高性能
yaf.name_suffix1PHP_INI_ALL在处理Controller, Action, Plugin, Model的时候, 类名中关键信息是否是后缀式, 比如UserModel, 而在前缀模式下则是ModelUser
yaf.name_separator“”PHP_INI_ALL在处理Controller, Action, Plugin, Model的时候, 前缀和名字之间的分隔符, 默认为空, 也就是UserPlugin, 加入设置为"_", 则判断的依据就会变成:“User_Plugin”, 这个主要是为了兼容ST已有的命名规范
yaf.forward_limit5PHP_INI_ALLforward最大嵌套深度
yaf.use_namespace0PHP_INI_SYSTEM开启的情况下, Yaf将会使用命名空间方式注册自己的类, 比如Yaf_Application将会变成Yaf\Application
yaf.use_spl_autoload0PHP_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


版权声明:本文为weixin_40087851原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。