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

前言:

本节对Wafer 服务端 SDK 是腾讯云为微信小程序开发者提供的快速开发库,SDK 封装了以下功能供小程序开发者快速调用的源码的初始化进行了分析.


写在前面的话:

小程序PHP,用的是CodeIgniter开源框架,那么,要了解启动的过程,必须先对文件结构体系有所了解:

1 CodeIgniter 是什么

http://codeigniter.org.cn/user_guide/overview/at_a_glance.html

1.1 CodeIgniter 是一个应用程序框架

CodeIgniter 是为 PHP 开发人员提供的一套 Web 应用程序工具包。 它的目标是能够让你比从零开始更加快速的完成项目,它提供了一套 丰富的的类库来满足我们日常的任务需求,并且提供了一个简单的 接口和逻辑结构来调用这些库。CodeIgniter 通过最小化你需要的代码量, 让你把更多的精力放到项目的创造性开发上。

1.2 应用程序流程图

下图说明了整个系统的数据流程:

  1. index.php 文件作为前端控制器,初始化运行 CodeIgniter 所需的基本资源;
  2. Router 检查 HTTP 请求,以确定如何处理该请求;
  3. 如果存在缓存文件,将直接输出到浏览器,不用走下面正常的系统流程;
  4. 在加载应用程序控制器之前,对 HTTP 请求以及任何用户提交的数据进行安全检查;
  5. 控制器加载模型、核心类库、辅助函数以及其他所有处理请求所需的资源;
  6. 最后一步,渲染视图并发送至浏览器,如果开启了缓存,视图被会先缓存起来用于 后续的请求。

1.3 模型-视图-控制器

CodeIgniter 的开发基于 MVC(模型-视图-控制器)设计模式。MVC 是一种 用于将应用程序的逻辑层和表现层分离出来的软件方法。在实践中,由于这种分离 所以你的页面中只包含很少的 PHP 脚本。

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

1 初始化文件:

下图给出了文件目录的大致分析,和初始化相关的。

参考,我的另外一个博文;

1.1 初始化配置文件

在SDK说明文件里面:提到的初始化相关的配置文件:有SDK的配置,有DEMO的配置。在SDK的说明文档里面有一些零散的说明,但是,感觉东一块西一块,感觉腾讯说明不是很清楚。

1.1.1 server 根目录下的Readme说明:

上了就提到如下配置文件,

- SDK 配置文件:`/etc/qcloud/sdk.config`
- 示例代码部署目录:`/data/release/php-weapp-demo`
- 运行示例的 nginx 配置文件: `/etc/nginx/conf.d/php-weapp-demo.conf`

这些文件应该是部署后,运行态的访问文件,因为开发文件里面根本没这些文件,所以,我们这里不要去管他。

示例使用 `CodeIgniter(v3.1)` 框架制作。其中,`index.php` 是 启动文件,`install_qcloud_sdk.php` 用于初始化 SDK 配置,配置从文件 `/etc/qcloud/sdk.config` 中读取(运行态不要管他4。配)置文件包含如下配置项:

这一句,开始正在说明了启动初始化相关的讯息,

  • `index.php` 是 启动文件
  • `install_qcloud_sdk.php` 用于初始化 SDK 配置

### 初始化 SDK 配置项

```php
use \QCloud_WeApp_SDK\Conf;


2 启动源码大致分析

2.1 index.php

基本上根据用户给出的环境,构建整个SDK后台的环境,根据不同的运行环境,设置不同的错误报告等级:

/**---------------------------------------------------------------* ERROR REPORTING*---------------------------------------------------------------** Different environments will require different levels of error reporting.* By default development will show errors but testing and live will hide them.*/
switch (ENVIRONMENT)
{case 'development':error_reporting(-1);ini_set('display_errors', 1);break;case 'testing':case 'production':ini_set('display_errors', 0);if (version_compare(PHP_VERSION, '5.3', '>=')){error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED);}else{error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE);}break;default:header('HTTP/1.1 503 Service Unavailable.', TRUE, 503);echo 'The application environment is not set correctly.';exit(1); // EXIT_ERROR
}

然后设置,SDK的应用目录体系:

// --------------------------------------------------------------------
// END OF USER CONFIGURABLE SETTINGS.  DO NOT EDIT BELOW THIS LINE
// --------------------------------------------------------------------

注意在上述注解之前都是可以用户配置的,这段注解后的代码,后面的配置似乎不被推荐。index指向了后面两个初始化文件:

/** --------------------------------------------------------------------* LOAD and SETUP `QCLOUD SDK CONFIGURATION`* --------------------------------------------------------------------*/
require_once './install_qcloud_sdk.php';/** --------------------------------------------------------------------* LOAD THE BOOTSTRAP FILE* --------------------------------------------------------------------** And away we go...*/
require_once BASEPATH.'core/CodeIgniter.php';

2.2 install_qcloud_sdk.php

// 加载 SDK

require_once './vendor/autoload.php';

require_once './config.php';

2.2.1 autoload.php

require_once __DIR__ . '/composer/autoload_real.php';

这是一个编译自动生成的load文件。没有配置需求

2.2.2 config.php

这里设置了应用Demo的配置,

2.2.3 本文件做了的事情

  • 合并两个配置文件
  • 设置日志输出级别

2.3 core/CodeIgniter.php

/** ------------------------------------------------------*  Load the framework constants* ------------------------------------------------------*/if (file_exists(APPPATH.'config/'.ENVIRONMENT.'/constants.php')){require_once(APPPATH.'config/'.ENVIRONMENT.'/constants.php');}require_once(APPPATH.'config/constants.php');

这一段定义了,系统常量的设置文件路径和文件,“."是PHP字符串连接符

  • APPPATH 就是 application/ 注意分隔符已经定义了
define('APPPATH', $application_folder.DIRECTORY_SEPARATOR);
  • config 是application下的一个文件夹
  • constants.php 是定义了一下常量的表述

【中级】【后台】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 03 - 腾讯后台初始化 和 CodeIgniter相关推荐

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

    1 前言: 本文原创,欢迎转载,但是,务必保持原文并且给出原文链接. 微信小程序 - 腾讯云 - PHP - DEMO 是微信提供的一个微信小程序和腾讯云小程序云服务wafer 进行接口的例子. 本仓 ...

  2. 【基础】【后台】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 02 - 路由

    本文原创,欢迎转载,但是,务必保持原文并且给出原文链接. 前言: 前一篇已经介绍了,整个wafer2的文件组织,这里结合文件组织,分析一下,微信后台采用的MVC的框架. 路由是服务器配置管理的重要方面 ...

  3. 模拟投票小程序C语言代码,微信小程序投票系统创建投票发布demo完整源码下载 一个很简单 - 下载 - 搜珍网...

    压缩包 : cc5b0189c052ed2f04381e14637b362c.zip 列表 wx_voteforyou-master/ wx_voteforyou-master/README.md w ...

  4. node.js云学堂微信小程序学习系统的设计与实现毕业设计源码011735

    Node.js云学堂微信小程序 摘要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课 ...

  5. 基于微信小程序的校园信息共享平台 毕业设计-附源码211615

    校园信息共享平台 摘 要 随着信息技术的发展,各大高校已经建立了各自的部门信息系统,但是由于这些应用系统开发时间迥异,开发平台不同,开发技术差异化的原因,各个系统间缺乏关联,使得信息不能有效共享,逐渐 ...

  6. JAVA+基于微信小程序的校园信息共享平台 毕业设计-附源码211615

    校园信息共享平台 摘 要 随着信息技术的发展,各大高校已经建立了各自的部门信息系统,但是由于这些应用系统开发时间迥异,开发平台不同,开发技术差异化的原因,各个系统间缺乏关联,使得信息不能有效共享,逐渐 ...

  7. JAVA基于微信小程序的校园信息共享平台毕业设计-附源码211615

    摘 要 随着信息技术的发展,各大高校已经建立了各自的部门信息系统,但是由于这些应用系统开发时间迥异,开发平台不同,开发技术差异化的原因,各个系统间缺乏关联,使得信息不能有效共享,逐渐形成了" ...

  8. SSM基于微信小程序的外卖点餐系统 毕业设计-附源码2711704

    基于微信小程序的外卖点餐系统的设计与实现 摘要 立足于当下餐饮行业现有的点餐模式,分析传统APP点餐的运作流程,结合微信小程序的特点设计新型的外卖点餐系统.近几年,人们生活水平日益提升,但工作强度和压 ...

  9. mysql基于微信小程序的化妆品商城系统设计与实现毕业设计源码041152

    基于springboot微信小程序的化妆品商城系统 摘  要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户 ...

最新文章

  1. Exchange server 2010脱机工作簿故障问题
  2. asp.net开源CMS推荐
  3. 清华博士教你如何用推荐算法技术「找到女朋友」
  4. 【springboot】模板路径、静态资源路径、WebRoot的本地路径
  5. java创建临时文件_用Java创建一个临时文件
  6. Java随机生成长宽的矩形_java – 将正方形或矩形分解为大量随机大小的正方形或矩形...
  7. Linux磁盘管理详解
  8. 中兴机顶盒刷机后服务器连接失败,刷机后rec无法进入!!!求助
  9. 双向三相交错并联DC-DC变换器
  10. D-S envidence theory(DS 证据理论)的基本概念和推理过程
  11. 手机型号修改 java_Android 中的设置关于手机中的型号的更改
  12. 畅购9-Spring Security Oauth2 JWT
  13. html首页随机飘浮图片,jQuery 全屏随机漂浮图片广告
  14. Kademlia详解 (转贴NeoRagex2002)
  15. 微信公众号自定义菜单添加emoji表情图标
  16. win10清理_教你一招win10如何彻底清理C盘垃圾
  17. AltiumDesigner PCB设计规则中英文对照及说明
  18. 最新高品质+西安市区建筑物范围面shp格式+小区大厦学校医院占地面积
  19. 函数指针的用法以及用途详解
  20. 【飞项】定制你的专属日程管理管家拒绝行动的矮子

热门文章

  1. JavaScript数组拼接、对象拼接
  2. vue 实现 router store 文件自动加载
  3. 【Python】求n!
  4. BUUCTF寒假刷题-Web
  5. C#LeetCode刷题之#4-两个排序数组的中位数(Median of Two Sorted Arrays)
  6. 阿里前端开源的一些产品
  7. 如何得知mysql表结构发生变化了呢?
  8. 从头开始开发gis_DevRel工程师一:从头开始建立开发人员关系团队
  9. 宏定义中有浮点数_GEO是什么?还可以定义新的数据类型吗?
  10. mysql 插入数据后显示乱码