接下来我们通过最简单的“hello yaf”例子说明 Yaf 的用法,然后一步步走向更加复杂的用法。Yaf的PHP官方手册位置是:http://php.net/manual/zh/book.yaf.php,这比鸟哥(Yaf作者)自己博客 http://www.laruence.com/manual/的文档要新,所以如果要参考手册,建议看PHP官方手册为佳。
本教程在PHP手册的基础上,注重具体的实践,每一步都亲自验证,所以更适合作为入门和深入教程。
1 目录部署
作为简单的例子,我们需要部署的目录和文件并不多,如下。
- index.php
+ conf
|- application.ini
- application/
- Bootstrap.php
+ controllers
- Index.php
+ views
|+ index
- index.phtml
总共5个文件和5个目录(包括子目录)。
2 文件内容
2.1 index.php
首先整站唯一的入口文件,内容:
define("APP_PATH", dirname(__FILE__));
$app = new Yaf_Application(APP_PATH . "/conf/application.ini");
$app->bootstrap()->run();
第一个代码行定义应用的 ROOT 目录;
第二代码行实例化Yaf_Application,并传入配置文件;
第三代码行首先执行bootstrap()方法初始化,使用该方法有个要求:必须在Bootstrap.php文件中创建Bootstrap类,且该类继承自Yaf_Bootstrap_Abstract。然后run()方法运行。
2.2 application.ini
这是系统的配置文件,在系统运行之前会读取其中的配置,可以是用ini文件,或者用php文件的数组方式。ini文件内容:
[product]
;支持直接写PHP中的已定义常量
application.directory = APP_PATH "/application/"
其中,
APP_PATH 取自入口文件的常量;
application.directory 定义应用的目录,这个目录下面有controllers、views等MVC目录;
2.3 Bootstrap.php
这是启动是要执行的脚本,因为现在并不需要做任何初始化,所以直接写一个类就可以。
class Bootstrap extends Yaf_Bootstrap_Abstract
{
}
其中,Yaf_Bootstrap_Abstract是Yaf中的类。
2.4 Index.php
控制器名字必须以Controller关键字结尾,并继承Yaf_Controller_Abstract(不然要Yaf干嘛),默认是Index控制器。
而动作方法则必须以Action关键字结尾,默认是index动作。
class IndexController extends Yaf_Controller_Abstract
{
public function indexAction()
{
$this->_view->word = "hello yaf";
}
}
控制器中的index动作就是将$this->_view->word输出到视图中。
2.5 Index.phtml
默认的视图文件内容如下。
<?php echo $word;?>3 效果
这样,访问你的服务器地址,就可以看到页面打印“hello yaf”输出了。