假设Yaf已经正确编译, 安装.
## Hello Yaf
### 目录结构
一个典型的目录结构
> + public
|- index.php //入口文件
|- .htaccess //重写规则
|+ css
|+ img
|+ js
>+ conf
|- application.ini //配置文件
>+ application
|+ controllers
|- Index.php //默认控制器
|+ views
|+ index //控制器
|- index.phtml //默认视图
|+ modules //其他模块
|+ library //本地类库
|+ models //model目录
|+ plugins //插件目录
### 入口文件
几乎所有php框架都采用了单一入口方式,入口文件是所有请求的入口, 一般都借助于rewrite规则, 把所有的请求都重定向到这个入口文件.
#### 一个经典的入口文件public/index.php
`<?php
define("APP_PATH", realpath(dirname(__FILE__) . '/../')); /* 指向public的上一级 */
$app = new Yaf_Application(APP_PATH . "/conf/application.ini");
$app->run();`
### 配置文件
在Yaf中, 配置文件支持继承, 支持分节. 并对PHP的常量进行支持. 你不用担心配置文件太大造成解析性能问题, 因为Yaf会在第一个运行的时候载入配置文件, 把格式化后的内容保持在内存中. 直到配置文件有了修改, 才会再次载入.
#### 一个简单的配置文件application/conf/application.ini
`[product]
;支持直接写PHP中的已定义常量
application.directory=APP_PATH "/application/" `
### 控制器
在Yaf中, 默认的模块/控制器/动作, 都是以Index命名的, 当然,这是可通过配置文件修改的.
对于默认模块, 控制器的目录是在application目录下的controllers目录下, Action的命名规则是"名字+Action"
#### 默认控制器application/controllers/Index.php
`<?php
class IndexController extends Yaf_Controller_Abstract {
public function indexAction() {//默认Action
$this->getView()->assign("content", "Hello Yaf");
}
}
?>`
### 视图文件
Yaf支持简单的视图引擎, 并且支持用户自定义自己的视图引擎, 比如Smarty.
对于默认模块, 视图文件的路径是在application目录下的views目录中以小写的action名的目录中.
`<html>
<head>
<title>Hello Yaf</title>
</head>
<body>
<?php echo $content;?>
</body>
</html>`
html在这个文档里不显示,我这里截了一张图
![![](https://box.kancloud.cn/2015-11-25_565581ce6940c.png)]
### 运行
在浏览器输入 http://yourhostname/public/index.php
是不是看到了页面输出的Hello Yaf
### 额外说明一下:
必要的配置项
Yaf和用户共用一个配置空间, 也就是在Yaf_Application初始化时刻给出的配置文件中的配置. 作为区别, Yaf的配置项都以ap开头. Yaf的核心必不可少的配置项只有一个(其实, 这个也可以有默认参数, 但是作者觉得完全没有配置, 显得太寒酸了).
application.directory String 应用的绝对目录路径
就是我们刚在application/conf/application.ini里配置的内容
### Yaf的项目可选配置信息
详情可以稳步到yaf文档查看http://www.laruence.com/manual/yaf.config.optional.html