热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Yaf零基础学习总结3-HelloYaf

上一次我们已经学习了如何安装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 
  1. define("APP_PATH",  realpath(dirname(__FILE__) . '/../')); /* 指向public的上一级 */  
  2. $app  = new Yaf_Application(APP_PATH . "/conf/application.ini");  
  3. $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 
  1. class IndexController extends Yaf_Controller_Abstract {  
  2.    public function indexAction() {//默认Action  
  3.        $this->getView()->assign("content""Hello Yaf");  
  4.    }  
  5. }  
  6. ?>  


6、视图文件 

Yaf支持简单的视图引擎, 并且支持用户自定义自己的视图引擎, 比如Smarty。对于默认模块, 视图文件的路径是在application目录下的views目录中以小写的action名的目录中. 

一个默认Action的视图application/views/index/index.phtml 
[html] view plaincopy
  1. <html>  
  2. <head>  
  3.    <title>Hello Yaftitle>  
  4. head>  
  5. <body>  
  6.   php echo $content;?>  
  7. body>  
  8. html>  


好了,一个基本的测试已经部署好了,接下来就来验证吧,直接在浏览器里面输入 http://www.yourhostname.com/application/index.php 



有没有输出 “Hello Yaf”呢?相信大家一步一步模仿过来肯定已经成功了,没成功的看下有没有什么错误提示,具体问题具体分析哈!
推荐阅读
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • VPX611是北京青翼科技推出的一款采用6U VPX架构的高性能数据存储板。该板卡搭载两片Xilinx Kintex-7系列FPGA作为主控单元,内置RAID控制器,支持多达8个mSATA盘,最大存储容量可达8TB,持续写入带宽高达3.2GB/s。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 本文详细介绍了如何在CentOS 7操作系统上安装和配置Grafana,包括必要的依赖项安装、插件管理以及服务启动等步骤。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 本文详细介绍了Git分布式版本控制系统中远程仓库的概念和操作方法。通过具体案例,帮助读者更好地理解和掌握如何高效管理代码库。 ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
  • 本文介绍了如何利用npm脚本和concurrently工具,实现本地开发环境中多个监听服务的同时启动,包括HTTP服务、自动刷新、Sass和ES6支持。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 本文介绍如何通过SSH协议使用Xshell远程连接到Ubuntu系统。为了实现这一目标,需要确保Ubuntu系统已安装并配置好SSH服务器,并保证网络连通性。 ... [详细]
  • 落樱3D v0.5是一款在Android平台上发布的3D美少女格斗游戏,本次更新带来了多项新功能和优化。 ... [详细]
author-avatar
手机用户2502886741
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有