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