Hello-Risen-程序

技术文档网 2021-04-15

首先需要说明的是,您下载到的文件包含两部分,其中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";
}

相关文章

  1. 如何通过xhprof分析性能

    使用方法 xhprof_enable(); /** ... 要检查的php代码 ... **/ $xhprof_data = xhprof_disable(); // 引入xhprof_lib i

  2. LUMEN API Controller 规范

    1. 第三方依赖库规范 在使用LUMEN实现API接口时,以下库必须需要包含在composer包依赖中,以实现代码编写的一些规范 dingo/api : 实现API接口库 vlucas/phpdo

  3. PHP文件锁

    共享锁(LOCK_SH) 什么时候加共享锁? 当在读取数据的时候同时进行着其他的写操作,这个时候需要对文件加共享锁,否则无论有没有对写操作加写锁都会写入成功,导致数据不一致 当文件获得共享锁时,其他

  4. Hello-Risen-程序

    首先需要说明的是,您下载到的文件包含两部分,其中src中是开发源码,用于对Risen框架本身的开发,risen 目录中是通过源码生成的包含debug和release版本的框架程序,用于您应用程序的开发

  5. PHP自定义类示例(Weixin消息解析类)

    PHP自定义类示例(Weixin消息解析类) /** * Created by Qingger. * User: jsspf * Date: 2017/3/24 * Time: 10:50

随机推荐

  1. 如何通过xhprof分析性能

    使用方法 xhprof_enable(); /** ... 要检查的php代码 ... **/ $xhprof_data = xhprof_disable(); // 引入xhprof_lib i

  2. LUMEN API Controller 规范

    1. 第三方依赖库规范 在使用LUMEN实现API接口时,以下库必须需要包含在composer包依赖中,以实现代码编写的一些规范 dingo/api : 实现API接口库 vlucas/phpdo

  3. PHP文件锁

    共享锁(LOCK_SH) 什么时候加共享锁? 当在读取数据的时候同时进行着其他的写操作,这个时候需要对文件加共享锁,否则无论有没有对写操作加写锁都会写入成功,导致数据不一致 当文件获得共享锁时,其他

  4. Hello-Risen-程序

    首先需要说明的是,您下载到的文件包含两部分,其中src中是开发源码,用于对Risen框架本身的开发,risen 目录中是通过源码生成的包含debug和release版本的框架程序,用于您应用程序的开发

  5. PHP自定义类示例(Weixin消息解析类)

    PHP自定义类示例(Weixin消息解析类) /** * Created by Qingger. * User: jsspf * Date: 2017/3/24 * Time: 10:50