适合初学者对Yaf框架的学习(二)
前言
上一篇介绍了Yaf的安装,适合初学者对Yaf框架的学习(一)http://www.cnblogs.com/joshua317/articles/4622551.html,这篇来介绍一下Yaf的布局
一、Yaf的目录结构
1 YafWeb 2 index.php #入口文件 3 application #应用目录 4 Bootstrap.php 5 controllers #控制器目录 6 Index.php #默认Index控制器 7 library #本地类库 8 modules #其他模块 9 models #model目录 10 plugins #插件目录 11 views #视图目录 12 index #和Index控制器文件相对应目录 13 index.phtml #具体的index模板文件,后缀可以自己在配置文件中设置 14 conf #配置文件目录 15 app.ini #具体的配置文件 16 public #公共资源目录
二、创建nginx配置文件yafweb.conf
server { listen 9880;#监听的端口号,这个由你自己来定 server_name 101.200.***.***;#这个是我主机的ip,隐藏了后两个 index index.html index.htm index.php; root /alidata/www/YafWeb/; location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 1h; } #伪静态规则 location /{ if (!-e $request_filename) { rewrite ^/(.*)/index.php?$1 last; } } access_log /alidata/log/nginx/access/yafweb.log; }
然后执行以下任意一条命令 重启或者平滑重启nginx
/etc/init.d/nginx reload
#或者
/etc/init.d/nginx restart
三、各文件的内容
1.入口文件index.php
<?php define('APP_ROOT', realpath(dirname(__FILE__))); define("APP_PATH", APP_ROOT . '/application'); define("APP_CONFIG", APP_ROOT.'/conf'); //定义全局library ini_set('yaf.library', APP_PATH.'/library'); //第二个参数用来区分开发环境、测试环境、生产环境配置 对应config中内容 //实例化Bootstrap, 依次调用Bootstrap中所有_init开头的方法 $app = new Yaf_Application( APP_CONFIG."/app.ini",'common'); $app->bootstrap()->run();
2.配置文件app.ini
[common] application.modules= Index,Api ;layout application.directory = APP_PATH application.bootstrap = APP_PATH "/Bootstrap.php" application.library = APP_PATH "/library" application.layoutpath = APP_PATH "/view/" application.cache_config = 0 application.view.ext = "phtml"
;app application.baseUri = '' ;not used application.dispatcher.defaultModule = index application.dispatcher.defaultController = index application.dispatcher.defaultAction = index
;database config 数据库配置 database.config.charset = "utf8" database.config.host = localhost database.config.name = "mysql" database.config.user = "myuser" database.config.pwd = "mypwd" database.config.port = "3306" ;开发环境 [develop : common] ;errors (see Bootstrap::initErrors) application.showErrors = 1 application.throwException = 1 ;生产环境 [product : common] ;errors (see Bootstrap::initErrors) application.showErrors = 0 application.throwException = 0
说明:new Yaf_Application( APP_CONFIG."/app.ini",'common'); yaf读取配置文件app.ini,这样就会创建了一个对象
object(Yaf_Application)#1 (7) { ["config":protected]=> object(Yaf_Config_Ini)#2 (2) { ["_config":protected]=> array(2) { ["application"]=> array(8) { ["modules"]=> string(9) "Index,Api" ["directory"]=> string(31) "/alidata/www/YafWeb/application" ["bootstrap"]=> string(45) "/alidata/www/YafWeb/application/Bootstrap.php" ["library"]=> string(39) "/alidata/www/YafWeb/application/library" ["cache_config"]=> string(1) "0" ["view"]=> array(1) { ["ext"]=> string(5) "phtml" } ["baseUri"]=> string(0) "" ["dispatcher"]=> array(3) { ["defaultModule"]=> string(5) "index" ["defaultController"]=> string(5) "index" ["defaultAction"]=> string(5) "index" } } ["database"]=> array(1) { ["config"]=> array(6) { ["charset"]=> string(4) "utf8" ["host"]=> string(9) "localhost" ["name"]=> string(5) "mysql" ["user"]=> string(4) "root" ["pwd"]=> string(10) "aa60dc2991" ["port"]=> string(4) "3306" } } } ["_readonly":protected]=> bool(true) } ["dispatcher":protected]=> object(Yaf_Dispatcher)#4 (10) { ["_router":protected]=> object(Yaf_Router)#5 (2) { ["_routes":protected]=> array(1) { ["_default"]=> object(Yaf_Route_Static)#6 (0) { } } ["_current":protected]=> NULL } ["_view":protected]=> NULL ["_request":protected]=> object(Yaf_Request_Http)#3 (11) { ["module"]=> NULL ["controller"]=> NULL ["action"]=> NULL ["method"]=> string(3) "GET" ["params":protected]=> array(0) { } ["language":protected]=> NULL ["_exception":protected]=> NULL ["_base_uri":protected]=> string(0) "" ["uri":protected]=> string(1) "/" ["dispatched":protected]=> bool(false) ["routed":protected]=> bool(false) } ["_plugins":protected]=> array(0) { } ["_auto_render":protected]=> bool(true) ["_return_response":protected]=> bool(false) ["_instantly_flush":protected]=> bool(false) ["_default_module":protected]=> string(5) "Index" ["_default_controller":protected]=> string(5) "Index" ["_default_action":protected]=> string(5) "index" } ["_modules":protected]=> array(2) { [0]=> string(5) "Index" [1]=> string(3) "Api" } ["_running":protected]=> bool(false) ["_environ":protected]=> string(7) "product" ["_err_no":protected]=> int(0) ["_err_msg":protected]=> string(0) "" }
3.Bootstrap.php文件
<?php class Bootstrap extends Yaf_Bootstrap_Abstract { #里面具体需要啥,自己补充 }
4.Base.php文件
<?php class BaseController extends Yaf_Controller_Abstract{ public function init() { } } ?>
5.Index控制器文件
<?php class IndexController extends BaseController{ public function indexAction() { $this->getView()->assign("content", "Hello World"); } } ?>
6.index.phtml文件
<html> <head> <title>Hello World</title> </head> <body> <?php echo $content;?> </body> </html>
四、访问地址 http://101.200.***.***:9890/,看到以下内容,说明就成功了