注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

isblog主页

或许不一定要做得最多,但一定要做得最好! 能力就是一种财富,积累越多,就越体现你

 
 
 

日志

 
 

Yaf框架学习  

2017-03-19 17:17:46|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Laruence: PHP开发组核心成员,Zend顾问,PHP7主要开发者,Yaf,Yar,Yac等开源项目作者。
Laruence主页:http://www.laruence.com/


windows安装扩展:
yaf有TS和NTS版本,先查看下自己php的版本,用phpinfo()查看下thread safety项,如果为enabled的话,选择TS版本,反之选择NTS版本。
把下载的php_yaf.dll文件放到php的ext文件夹下。
修改php.ini加入extension =php_yaf.dll
再次查看phpinfo()的时候,就会出现yaf的配置信息了,这样就算完成了。

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
<?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
<?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 Yaf</title>
</head>
<body>
  <?php echo $content;?>
</body>
</html>
  评论这张
 
阅读(27)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018