1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【中级】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 01 - 文件组成详细分析

【中级】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 01 - 文件组成详细分析

时间:2018-08-08 23:09:23

相关推荐

【中级】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 01 - 文件组成详细分析

1 前言:

,欢迎转载,但是,务必保持原文并且给出原文链接。

微信小程序 - 腾讯云 - PHP - DEMO 是微信提供的一个微信小程序和腾讯云小程序云服务wafer进行接口的例子。

本仓库是最简版的 Wafer2 开发套件,建议配合腾讯云微信小程序开发者工具解决方案一起使用。适用于想要使用 Wafer SDK 开发的开发者,Demo 对 SDK 进行了详细的使用和介绍,降低开发者的学习成本。

2 界面:

该DEMO的界面如下:

3 路由配置:

软件里面给出了一个README.txt的说明文件:给出了如何设置环境的说明。参考我的另一个基础的博文。

前端和后端的路由设置,在微信小程序的代码上传到对应的腾讯云的时候,腾讯云小程序会自动设定好路由,你只需要安装说明里面做好小程序开发端的几个基本设置就好了。

上传代码完成之后,点击右上角的【详情】按钮,接着选择【腾讯云状态】即可看到腾讯云自动分配给你的开发环境域名。

完整复制(包括https://)开发环境 request 域名,然后在编辑器中打开client/config.js文件,将复制的域名填入host中并保存,保存之后编辑器会自动编译小程序,左边的模拟器窗口即可实时显示出客户端的 Demo。

4 文件构成:

Demo

├── application

│├── business

│ │└── ChatTunnelHandler.php

│├── cache

│├── config

│├── controllers

│ │├── Welcome.php

│ │├── Login.php

│ │├── User.php

│ │└── Tunnel.php

│├── core

│├── helpers

│ │└── general_helper.php

│├── hooks

│├── language

│├── libraries

│├── logs

│├── models

│├── third_party

│├── vendor

│└── views

│ └── welcome_message.php

├── index.php

├── install_qcloud_sdk.php

├── composer.json

└── system

`

4.1 根目录下的几个文件:

4.1.1 数据库文件:

我们在微信开发工具里面可以看到:cAuth.sql这个文件,这个是数据库文件,如何打开这个数据库文件呢?

这个我们用Navicat打开:Navicat是一款本地数据库工具:

参考,如何打开sql文件:

/article/0320e2c13bb4381b87507bdf.html

记住要双击!!

STEP as following:

右键刷新:

可以看到多了一个表格:双击打开:

对比:我们看文件内容如下:

下面解释一下:

SET NAMES utf8;

SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------

-- Table structure for `cSessionInfo`

-- ----------------------------

DROP TABLE IF EXISTS `cSessionInfo`;

CREATE TABLE `cSessionInfo` (

`open_id` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,

`uuid` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,

`skey` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,

`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

`last_visit_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

`session_key` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,

`user_info` varchar(2048) COLLATE utf8mb4_unicode_ci NOT NULL,

PRIMARY KEY (`open_id`),

KEY `openid` (`open_id`) USING BTREE,

KEY `skey` (`skey`) USING BTREE

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会话管理用户信息';

SET FOREIGN_KEY_CHECKS = 1;

上述语句,相关知识如下:

COLLATE

一个子句,可应用于数据库定义或列定义以定义排序规则,或应用于字符串表达式以应用排序规则投影。

语法

COLLATE < collation_name >

< collation_name > ::=

{Windows_collation_name} | {SQL_collation_name}

参数

collation_name

是应用于表达式、列定义或数据库定义的排序规则的名称。collation_name 可以只是指定的Windows_collation_name或SQL_collation_name。

Windows_collation_name

是 Windows 排序规则的排序规则名称。请参见 Windows 排序规则名称。

SQL_collation_name

是 SQL 排序规则的排序规则名称。请参见 SQL 排序规则名称。

注释

COLLATE 子句可以在几个级别上指定,包括以下级别:

创建或更改数据库。

可以使用 CREATE DATABASE 或 ALTER DATABASE 语句的 COLLATE 子句指定数据库的默认排序规则。还可在创建数据库时使用 SQL Server 企业管理器指定排序规则。如果不指定排序规则,则将为数据库指派 SQL Server 实例的默认排序规则。

创建或更改表列。

可以使用 CREATE TABLE 或 ALTER TABLE 语句的 COLLATE 子句指定每个字符串列的排序规则。还可在创建表时使用 SQL Server 企业管理器指定排序规则。如果不指定排序规则,将为列指派数据库的默认排序规则。

还可使用 COLLATE 子句中的 database_default 选项,指定临时表中的列使用连接的当前用户数据库(而不是tempdb)的默认排序规则。

投影表达式的排序规则。

可以使用 COLLATE 子句将字符表达式投影到特定的排序规则。将为字符字面值和变量指派当前数据库的默认排序规则。将为列引用指派列的定义排序规则。有关表达式排序规则的信息,请参见排序规则的优先顺序。

4.1.2 项目配置文件project.config.json

4.2 client 下的几个文件

4.2.1 用到的几个函数和属性

require函数

.wxs模块中引用其他wxs文件模块,可以使用require函数。

引用的时候,要注意如下几点:

只能引用.wxs文件模块,且必须使用相对路径。wxs模块均为单例,wxs模块在第一次被引用时,会自动初始化为单例对象。多个页面,多个地方,多次引用,使用的都是同一个wxs模块对象。如果一个wxs模块在定义之后,一直没有被引用,则该模块不会被解析与运行。

示例代码:

在开发者工具中预览效果

// /pages/tools.wxsvar foo = "'hello world' from tools.wxs";var bar = function (d) {return d;}module.exports = {FOO: foo,bar: bar,};module.exports.msg = "some msg";

// /pages/logic.wxsvar tools = require("./tools.wxs");

module.exports 属性

个模块要想对外暴露其内部的私有变量与函数,只能通过module.exports实现。

示例代码:

Preview in Developer Tools

// /pages/tools.wxsvar foo = "'hello world' from tools.wxs";var bar = function (d) {return d;}module.exports = {FOO: foo,bar: bar,};module.exports.msg = "some msg";

<!-- page/index/index.wxml --><wxs src="./../tools.wxs" module="tools" /><view> {{tools.msg}} </view><view> {{tools.bar(tools.FOO)}} </view>

小结:WXS分为模块内应用和直接页面应用,分别使用require函数和exports属性。

4.2.2 文件列表说明

4.2.2.1 app.js

4.3 Server 文件夹下的文件分析:

第一个起始文件就是,

4.3.1 根目录下:

4.3.1.1 install_qcloud_sdk.php

用来对sdk进行安装,初始化

<?phpdefined('BASEPATH') OR exit('No direct script access allowed');// 加载 SDKrequire_once './vendor/autoload.php';require_once './config.php';use \QCloud_WeApp_SDK\Conf as Conf;// 系统判断if (PHP_OS === 'WINNT') {$sdkConfigPath = 'C:\qcloud\sdk.config';} else {$sdkConfigPath = '/data/release/sdk.config.json';}$sdkConfig = [];if (file_exists($sdkConfigPath)) {$sdkConfig = json_decode(file_get_contents($sdkConfigPath), true);}if (!is_array($sdkConfig)) {echo "SDK 配置文件({$sdkConfigPath})内容不合法";die;}// 合并 sdk config 和原来的配置$config = array_merge($sdkConfig, $config);/*** --------------------------------------------------------------------* 设置 SDK 基本配置* --------------------------------------------------------------------*/Conf::setup($config);/*** --------------------------------------------------------------------* 设置 SDK 日志输出配置(主要是方便调试)* --------------------------------------------------------------------*/// 开启日志输出功能Conf::setEnableOutputLog(true);// 指定 SDK 日志输出目录(注意尾斜杠不能省略)Conf::setLogPath(APPPATH . 'logs/');// 设置日志输出级别// 1 => ERROR, 2 => DEBUG, 3 => INFO, 4 => ALLConf::setLogThresholdArray([2]); // output debug log only

4.3.1.2index.php

启动文件,定义了PHP的访问的文件名称。构建系统访问目录结构。

4.3.1.3 config.php

小程序配置文件。

4.3.1.4composer.json

`composer.json` 文件中声明了对 SDK 的依赖,可执行命令 `composer install` 安装依赖。

Composer是一个非常流行的PHP包依赖管理工具,

/01-basic-usage.html

4.3.2 配置和部署地址

- SDK 配置文件:`/etc/qcloud/sdk.config`

- 示例代码部署目录:`/data/release/php-weapp-demo`

- 运行示例的 nginx 配置文件: `/etc/nginx/conf.d/php-weapp-demo.conf`

4.3.3application/

application 使用的是CodeIgniter的框架:

/user_guide/general/welcome.html

CodeIgniter 是一套给 PHP 网站开发者使用的应用程序开发框架和工具包。 它的目标是让你能够更快速的开发,它提供了日常任务中所需的大量类库, 以及简单的接口和逻辑结构。通过减少代码量,CodeIgniter 让你更加专注 于你的创造性工作。

CodeIgniter 的开发基于 MVC(模型-视图-控制器)设计模式。MVC 是一种 用于将应用程序的逻辑层和表现层分离出来的软件方法。

模型代表你的数据结构。通常来说,模型类将包含帮助你对数据库进行增删改查的方法。视图是要展现给用户的信息。一个视图通常就是一个网页,但是在 CodeIgniter 中, 一个视图也可以是一部分页面(例如页头、页尾),它也可以是一个 RSS 页面, 或其他任何类型的页面。控制器是模型、视图以及其他任何处理 HTTP 请求所必须的资源之间的中介,并生成网页。

对于application 下的文件:

4.3.3.1用户自己的应用运行地址:

## 如果在demo基础上开发

将自己开发的接口放到如下目录下即可生效

/data/release/php-weapp-demo/application/controllers/

【案】实践显示,

应该是如下目录:

controllers/

`application/controllers/`目录包含了示例用到的4个接口路由,

路由和处理文件映射关系如下:

```

// 首页指引

/ => application/controllers/Welcome.php

// 登录

/login => application/controllers/Login.php

// 获取微信用户信息

/user => application/controllers/User.php

其他目录

// 处理信道请求

/tunnel => application/controllers/Tunnel.php

`application/business/ChatTunnelHandler.php` 是业务处理信道请求的示例代码。

`application/helpers/general_helper.php` 包含简单的 `debug` 方法用于打印日志。

案:

4.3.4composer.json

/108885/

Composer是一个非常流行的PHP包依赖管理工具,

/01-basic-usage.html

基本用法:

小结:

微信小程序腾讯云的目录组织分为两个部分,一个部分是本地的客户端,一个部分是后台的处理程序。

分别在client, 和 server目录下,本文比较详细的说明了大多数的文件和文件夹的意义和用法。

针对server,微信其实主要用的是mvc的CodeIgniter的框架,大多数目录结构也非常一致。所以,可以再找CodeIgniter的说明仔细看一下。

遇到最比较特殊的地方是,服务器的结构和URL的对于关系,这个要分析Demo.php的仔细后,看给出的结果。

发现服务器的URL的接口标准为:

[你的服务器地址/weapp/接口文件名.php]

实际和遇到的问题:

在实践中,Demo给出的和服务器的接口都可以很好的访问,但是,自己开发的接口总是不行,一直怀疑是url的格式不对,仔细查看了CodeIgniter的URL的定义,没有问题。后来发现,原来是PHP的接口文件,

首字母没有大写的原因!!!

这居然导致,接口报错,例如,给出的例子,为Demo.php 而不是demo.php

appservice?t=1534803450389:1008 GEThttps://fshmr7vc.qcloud.la/weapp/demo404 (Not Found)

否则,会报后台php接口文件无法找到的错误。如上,一定要把首字母改成大写,就可以。

具体,后台的访问机制,我会在另外一篇博客里面再分开详细叙述,这里,因为接受文件结构为主,就暂时略过。

参考:

1路由表是如何建立的?

/qingjiaowoxiaoxioashou/p/6505360.html

2项目配置文件

https://developers./miniprogram/en/dev/devtools/projectconfig.html?search-key=miniprogramRoot

3 CGI 那点事

一个简洁的说明

/f-ck-need-u/p/7627035.html

CGI 是什么玩意

/JAVA_SanXin/article/details/51496688

一个复杂的说明

/wangqing008/article/details/50411596

4微信小程序session管理

https://www.it-/archives/post-140.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。