蒙国造博客

Yaf教程2:入门使用

接下来我们通过最简单的“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

首先整站唯一的入口文件,内容:

<?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

这是启动是要执行的脚本,因为现在并不需要做任何初始化,所以直接写一个类就可以。

<?php
class Bootstrap extends Yaf_Bootstrap_Abstract
{
}

其中,Yaf_Bootstrap_Abstract是Yaf中的类。

2.4 Index.php

控制器名字必须以Controller关键字结尾,并继承Yaf_Controller_Abstract(不然要Yaf干嘛),默认是Index控制器。

而动作方法则必须以Action关键字结尾,默认是index动作。

<?php
class IndexController extends Yaf_Controller_Abstract
{
    public function indexAction()
    {
        $this->_view->word = "hello yaf";
    }
}

控制器中的index动作就是将$this->_view->word输出到视图中。

2.5 Index.phtml

默认的视图文件内容如下。

<!DOCTYPE html>
<html>
    <head>
        <title><?php echo $word;?></title>
    </head>
    <body>
        <div><?php echo $word;?></div>
    </body>
</html>

3 效果

这样,访问你的服务器地址,就可以看到页面打印“hello yaf”输出了。

退出移动版