Skip to content

How To Use?

紫影龙 edited this page Feb 13, 2019 · 3 revisions

Welcome to the CgiManager wiki! 这里告诉你如何快速使用CgiManager编译一个WebApp

一、框架结构

WWW是框架的根目录,你也可以根据需要更改为其他名称,比如webroot或者wwwroot

application 是非常重要的目录,里面有框架的配置文件和视图层目录view。

application/view 下放置控制器对应的html文件。

application/config.txt 是框架的核心配置文件。

application/database.txt 是框架的数据库配置文件。

application/route.txt 是框架的路由配置文件,常用于伪静态配置。

public 是资源目录,可在里面放置css js 以及需要用到的图片之类的文件。

htaccess 是Apache 的配置文件,用于隐藏入口index.cgi。若不需要可删除。

favicon.ico 这个就不需要说明了吧若真的不知道,请百度一下

二、控制器的使用

本框架采用MVC的模式进行开发,控制器的使用非常重要。下面将用一个小例子创建一个控制器。

首先新建一个C++类, 如CIndex。其头文件如下:

#pragma once
#include "CgiManager.h"

class CIndex :
	public CController //别忘了继承CController类
{
public:
	CIndex();
	~CIndex();
        // 必须是静态函数
	static void index();
};

cpp文件如下:

#include "Index.h"

CIndex::CIndex()
{
}

CIndex::~CIndex()
{
}

void CIndex::index()
{
	// 展示首页 空参数将访问默认的index.html
	HtmlView();
}

这样就写好了一个简单的控制器类。接下来只需要注册这个控制器类就可以使用了~

我们再新建一个cpp文件,如 main.cpp 用做入口。

#include "CgiManager.h"

// 加载控制器
#include "Index.h"

// CGI程序入口点 (注意,是cgiMain而不是main)
int cgiMain()
{
	// 定义控制器对象
	CIndex index;

	// 绑定方法 (参数:绑定的控制器对象, 绑定的url, 绑定的方法)
	CController::BindFunction(index, "index", index.index);

	// 初始化控制器 (无论有多少控制器,只需在最后调用一次就可以)
	CController::Initialize();

	// 返回
	return true;
}

这样子就可以使用了。注意Initialize只需在最后调用一次就行。

接下来我们把index.html放到 www/application/view/index 目录下。[此处的index指的是控制器名。]

这样子就可以通过在浏览器访问localhost/index/index 看到首页了~ [url规则: 控制器名/绑定的方法名]

当然,如果config.txt里配置了默认控制器和方法,可直接访问localhost。

看到这里,你可能会问,控制器名不是CIndex吗,为什么变成index了。这是因为config.txt里默认的控制器前缀为C。

如果需要使用伪静态,根据需求配置好route.txt就可以了。

如localhost/index.html等同于访问localhost/index/index

三、模型的使用

根据需求配置好database.txt后,框架将会自动连接到数据库,非常方便。

在需要使用的控制器里声明模型对象后就可以使用了。

void CIndex::test()
{
    // 构造数据模型
    CModel pModel;

    // 创建表 (若不存在则创建,已存在则不会执行)
    pModel.Create("user", "user_id INTEGER PRIMARY KEY AUTOINCREMENT, user_name varchar(255), password varchar(255)");

    // 检查数据 (不存在则插入数据)
    if(!pModel.Check("user", "user_name = 'shadow'"))
    {
        pModel.Save("user", "null, 'shadow', '123456'")
    }

    // 根据字段名称查询数值
    string name = pModel.Get("user", "user_name", "user_name = 'shadow'");
    string pwd  = pModel.Get("user", "password",  "user_name = 'shadow'");
    OutPut("用户名:%s 密码:%s", name.c_str(), pwd.c_str());
}

这样子就可以使用模型了,是不是非常简单呢~

Clone this wiki locally