作者:手机用户2502886741 | 来源:互联网 | 2015-11-28 23:53
上一次我们已经学习了如何安装yaf了,准备工作做好了之后我们来开始实际的编码了,码农都知道一个经典的语句就是“HelloWorld”了,今天我们开始入手Yaf,目标只要能得到“HelloYaf”就可以了,不多说,下面开始了。(注:需要读者有一定的MVC知识基础,最好用过一些其他简单的框架)
上一次我们已经学习了如何安装yaf了,准备工作做好了之后我们来开始实际的编码了,码农都知道一个经典的语句就是“Hello World”了,今天我们开始入手Yaf,目标只要能得到“Hello Yaf”就可以了,不多说,下面开始了。(注:需要读者有一定的MVC知识基础,最好用过一些其他简单的框架)
1、组织目录结构
对于使用过框架的来说这点很好理解,对于没使用过框架的来说建议先别在这死磕,先记着吧,简单点就是对于我们的文件结构做一些规定,让自己和别人都能看的清楚,能很快的找到需要的文件或类。
作者说过对于Yaf的应用, 都应该遵循类似下面的目录结构.下面我们看一个典型的Yaf目录结构
+ public
|- index.php //入口文件
|- .htaccess //重写规则
|+ css
|+ img
|+ js
+ conf
|- application.ini //配置文件
+ application
|+ controllers
|- Index.php //默认控制器
|+ views
|+ index //控制器
|- index.phtml //默认视图
|+ modules //其他模块
|+ library //本地类库
|+ models //model目录
|+ plugins //插件目录
2、入口文件
框架都得有一个统一的入口文件,入口文件是所有请求的入口, 一般都借助于rewrite规则, 把所有的请求都重定向到这个入口文件.
我们这里就先简单地copy一下代码吧,后面再来一一讲解,下面看一个典型的入口文件 public/index.php
-
-
define("APP_PATH", realpath(dirname(__FILE__) . '/../')); /* 指向public的上一级 */
-
$app = new Yaf_Application(APP_PATH . "/conf/application.ini");
-
$app->run();
3、URL重写
因为我们要把网站的所有请求都定为到我们指定的入口文件中,然后由入口文件根据请求的url调度到对于的模块,控制器,action处理,所以我们需要配置好服务器的url重写。
下面列出了Apache,Nginx,Lighttpd,SAE的常用重写规则,咱们可以根据自身使用的web服务器进行配置
//Apache的Rewrite (httpd.conf)
#.htaccess, 当然也可以写在httpd.conf
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php
//Nginx的Rewrite (nginx.conf)
server {
listen ****;
server_name domain.com;
root document_root;
index index.php index.html index.htm;
location / {
index public/index.php;
if (!-f $request_filename) {
rewrite ^/(.*) /public/index.php?$1 last;
}
}
}
//Lighttpd的Rewrite (lighttpd.conf)
$HTTP["host"] =~ "(www.)?domain.com$" {
url.rewrite = (
"^/(.+)/?$" => "/index.php/$1",
)
}
//SAE的Rewrite (config.yaml)
name: your_app_name
version: 1
handle:
- rewrite: if(!is_dir() && !is_file() && path ~ "^(.*)$" ) goto "/index.php"
记住:修改配置文件之后记得要重启webserver哦!
4、配置文件
在Yaf中,框架给我们封装好了一个配置类,在这里刚接触我们可以先不去了解他,只需记住、模仿就行了。
在Yaf中, 配置文件支持继承, 支持分节. 并对PHP的常量进行支持. 你不用担心配置文件太大造成解析性能问题, 因为Yaf会在第一个运行的时候载入配置文件, 把格式化后的内容保持在内存中. 直到配置文件有了修改, 才会再次载入.
一个简单的配置文件application/conf/application.ini
[product]
;支持直接写PHP中的已定义常量
application.directory=APP_PATH "/application/"
5、控制器
在Yaf中, 默认的模块/控制器/动作, 都是以Index命名的, 当然,这是可通过配置文件修改的.
对于默认模块, 控制器的目录是在application目录下的controllers目录下, Action的命名规则是"名字+Action"
默认控制器application/controllers/Index.php
-
-
class IndexController extends Yaf_Controller_Abstract {
-
public function indexAction() {//默认Action
-
$this->getView()->assign("content", "Hello Yaf");
-
}
-
}
-
?>
6、视图文件
Yaf支持简单的视图引擎, 并且支持用户自定义自己的视图引擎, 比如Smarty。对于默认模块, 视图文件的路径是在application目录下的views目录中以小写的action名的目录中.
一个默认Action的视图application/views/index/index.phtml
-
<html>
-
<head>
-
<title>Hello Yaftitle>
-
head>
-
<body>
-
php echo $content;?>
-
body>
-
html>
好了,一个基本的测试已经部署好了,接下来就来验证吧,直接在浏览器里面输入 http://www.yourhostname.com/application/index.php
有没有输出 “Hello Yaf”呢?相信大家一步一步模仿过来肯定已经成功了,没成功的看下有没有什么错误提示,具体问题具体分析哈!