ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
假设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