Hello-Risen-程序
首先需要说明的是,您下载到的文件包含两部分,其中src中是开发源码,用于对Risen框架本身的开发,risen 目录中是通过源码生成的包含debug和release版本的框架程序,用于您应用程序的开发,您暂时不用关心如何区分debug和release,忽略src,如果您想修改或者扩展Risen,请阅读扩展Risen部分。 注意这个程序虽然叫Hello Risen,但确不是最简单的Risen程序程序,本程序演示了如何使用入口文件,如何使用Trace,如何使用Layout,以及如何在模板如何引用数据,如果您想测试最简单的程序,可以使用本页最下面的代码
目录结构说明
.
├── risendoc/ 应用程序目录,应与应用名字相对应
│ ├── dbi 数据库接口程序,目录,例中未使用
│ ├── form 表单目录,本例中未使用
│ ├── module 事务逻辑程序目录,本例中未使用
│ ├── handler 请求处理器(RequestHandler)目录,即小型控制器目录
│ │ ├── HelloHandler.php 与 /Hello.html 对应的请求处理器
│ │ └── Layout.php 布局请求处理器,非必须,只是为了演示如何使用Layout
│ ├── template 模板目录
│ │ ├── HelloHandler.phtml 与HelloHandler对应的模板文件
│ │ └── Layout.phtml 布局模板文件,非必须,同Layout.php
│ └── wwwroot web 目录,这个目录位置任意,名字任意,但尽量不要把程序文件放在此目录下
│ ├── .htaccess 定义Apache URL重写文件,后面会有Nginx 配置说明
│ └── index.php 应用程序入口文件
└── risen risen 框架目录(非src/risen),位置任意,比如可以是 /usr/share/risen,当需要在同一台机器上部署多个应用时很有必要
└── ClassLoader.php 处理类的自动加载程序
risendoc/wwwroot/.htaccess 文件代码
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (^.+$) index.php
即,文件不存在直接rewrite到 index.php 即可 Nginx 下配置比较简单,直接在 location 中加上: try_files $uri /index.php 即可
risendoc/wwwroot/index.php 文件代码
<?php
namespace risen;
use risendoc\handler\Layout;
// 以此方式定义应用程序根路径,优点是不需要字符串拼接全路径,简单直接
chdir('../../');
// 包含类的自动加载文件
include 'risen/ClassLoader.php';
// 非必须行, 开启 Trace 功能,不指定参数默认以浏览器的Javascript控制台输出,推荐使用Firebug
Trace::enable();
// 非必须行,设置layout请求处理器
Application::setLayout('childHandler', new Layout());
// 运行,risendoc 为应用程序的名字,也是应用程序的目录名,自动处理url映射到请求处理器,
// 默认url形式为 /user/list-1-2.html => risendoc\handler\user\ListHandler,其中1和2为额外参数".html"后缀可选,可任意后缀
Application::run('risendoc');
risendoc/handler/Layout.php 文件代码
<?php
namespace risendoc\handler;
use risen\RequestHandler;
/**
* Class Layout
* @package risendoc\handler
*
* 只有数据的定义,没有任何处理过程,原因是这个例子太简单了,实际应用中可能包括用户登录等一些公共功能
*/
class Layout extends RequestHandler
{
protected $navigaterLinks = array(
array('关于 Risen', '/about.html'),
array('Hello Risen', '/hello.html'),
array('SQL 查询', '/sql-100.html'),
array('Memcache', '/memcache.html'),
array('Redis', '/redis.html'),
array('jq Ajax', '/ajax.html'),
array('使用 Trace', '/trace.html'),
);
}
risendoc/template/Layout.phtml 文件代码
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title><?=$this->childHandler->title?></title>
<script type="text/javascript" src="/js/jquery-1.7.2.min.js"></script>
<link rel="stylesheet" href="/style/common.css"/>
</head>
<body>
<div id="header">
<?foreach($this->navigaterLinks as $link):?>
<a href="<?=$link[1]?>"><?=$link[0]?></a>
<?endforeach;?>
</div>
<div id="body">
<?$this->childHandler->display();?>
</div>
</body>
</html>
risendoc/handler/HelloHandler.php 文件代码
<?php
namespace risendoc\handler;
use risen\RequestHandler;
class HelloHandler extends RequestHandler
{
public $title = 'Hello Risen 程序';
protected $someContent = "this text from HelloHandler";
}
相关文章
- 如何通过xhprof分析性能
使用方法 xhprof_enable(); /** ... 要检查的php代码 ... **/ $xhprof_data = xhprof_disable(); // 引入xhprof_lib i
- LUMEN API Controller 规范
1. 第三方依赖库规范 在使用LUMEN实现API接口时,以下库必须需要包含在composer包依赖中,以实现代码编写的一些规范 dingo/api : 实现API接口库 vlucas/phpdo
- PHP文件锁
共享锁(LOCK_SH) 什么时候加共享锁? 当在读取数据的时候同时进行着其他的写操作,这个时候需要对文件加共享锁,否则无论有没有对写操作加写锁都会写入成功,导致数据不一致 当文件获得共享锁时,其他
- Hello-Risen-程序
首先需要说明的是,您下载到的文件包含两部分,其中src中是开发源码,用于对Risen框架本身的开发,risen 目录中是通过源码生成的包含debug和release版本的框架程序,用于您应用程序的开发
- PHP自定义类示例(Weixin消息解析类)
PHP自定义类示例(Weixin消息解析类) /** * Created by Qingger. * User: jsspf * Date: 2017/3/24 * Time: 10:50
随机推荐
- 如何通过xhprof分析性能
使用方法 xhprof_enable(); /** ... 要检查的php代码 ... **/ $xhprof_data = xhprof_disable(); // 引入xhprof_lib i
- LUMEN API Controller 规范
1. 第三方依赖库规范 在使用LUMEN实现API接口时,以下库必须需要包含在composer包依赖中,以实现代码编写的一些规范 dingo/api : 实现API接口库 vlucas/phpdo
- PHP文件锁
共享锁(LOCK_SH) 什么时候加共享锁? 当在读取数据的时候同时进行着其他的写操作,这个时候需要对文件加共享锁,否则无论有没有对写操作加写锁都会写入成功,导致数据不一致 当文件获得共享锁时,其他
- Hello-Risen-程序
首先需要说明的是,您下载到的文件包含两部分,其中src中是开发源码,用于对Risen框架本身的开发,risen 目录中是通过源码生成的包含debug和release版本的框架程序,用于您应用程序的开发
- PHP自定义类示例(Weixin消息解析类)
PHP自定义类示例(Weixin消息解析类) /** * Created by Qingger. * User: jsspf * Date: 2017/3/24 * Time: 10:50