花猫壁纸开放平台PpWeb
  • 首页
  • 文档
  • 服务市场
  • 社区
  • 技术讨论
  • 注册
  • 登录

开始使用 PpWeb

简介安装和环境配置

基础

创建一个应用架构路由控制器PpWeb 命令行

进阶

类库
本页目录
  • 目录结构
  • 唯一入口
  • 应用划分
  • 模块化设计
  • URL映射
  • 命名空间
  • 依赖注入

架构

目录结构

PpWeb 框架目录结构如下:

ppweb                   Web 部署目录├─_template             内置模板目录│  ├─ModelM.php         模型模板文件│  ├─View.html          视图模板文件│  └─ViewC.php          视图控制器模板文件│├─app                   应用程序目录│  ├─a                  第三方接口目录│  ├─c                  公有类库目录│  ├─cmd                命令行工具目录│  ├─i                  公有继承控制器目录│  ├─j                  JSON格式配置文件目录│  ├─m                  公有模型目录│  └─v                  视图目录│     └─cmd             命令行工具视图目录│├─conf                  框架配置目录│  ├─db.json            数据库配置文件│  ├─developer.json     开发者配置文件│  └─redis.json         Redis 配置文件│├─core                  框架核心目录│  ├─func               函数库目录│  │  ├─common.php      常用的函数文件│  │  ├─devtest.php     开发测试的函数文件│  │  └─fileoper.php    文件操作的函数文件│  ││  ├─page               框架内置页面目录│  │  ├─404.php         404页面文件│  │  └─Repair.php      应用维护页面文件│  ││  ├─Config.php         获取配置类文件│  ├─Core.php           框架核心类文件│  ├─Mysqli_1_3.php     MySQLi 操作类文件│  └─View.php           视图引擎类文件│├─data                  应用数据目录│  └─base.sql           MySQL 核心数据文件│├─tmp                   应用缓存目录│  ├─asset              应用视图静态资源缓存目录│  ├─compile            应用编译缓存目录│  ├─log                应用日志目录│  ├─upload             应用上传缓存目录│  └─v                  应用视图缓存目录│├─upload                上传文件目录├─.htaccess             Apache 配置文件├─index.php             框架入口文件├─robots.txt            Robots 协议文件├─web.conf              Nginx 配置文件└─web.config            IIS 配置文件

唯一入口

入口文件默认为 PpWeb 根目录下的 index.php 文件。是客户端唯一能够请求的 PHP 文件,负责将客户端请求分发给控制器进行业务处理(本身不具备业务处理能力)。

执行流程如下:

  1. 定义常量

  2. 文件引入

  3. 载入开发者工具

  4. URL获取

  5. 域解析

  6. 配置

  7. 网站更新

  8. 设备解析

  9. 模块解析

  10. 传参解析

  11. 加载控制器

  12. 渲染视图

  13. 结束连接

  14. 离线任务

应用划分

PpWeb 采用多个应用共存的方式,目录结构如下:

├─app                   应用程序目录│  ├─application_one    应用程序1目录│  │  ├─ModuleOne       模块1目录│  │  ├─ModuleTwo       模块2目录│  │  └─...             更多模块目录│  ││  ├─application_two    应用程序2目录│  │  ├─ModuleOne       模块1目录│  │  ├─ModuleTwo       模块2目录│  │  └─...             更多模块目录│  │

请注意

遵循 PpWeb 对于应用的命名规范,全部采用小写英文字母和下划线命名(不得包含除此之外的字符)。

模块化设计

标准的应用模块目录结构如下:

├─app                   应用程序目录│  ├─application_one    应用程序1目录│  │  ├─ModuleOne       模块1目录│  │  │  ├─OneC.php     控制器1文件│  │  │  ├─TwoC.php     控制器2文件│  │  │  └─...          更多控制器文件│  │  ││  │  ├─ModuleTwo       模块2目录│  │  └─...             更多模块目录│  │

请注意

遵循 PpWeb 对于模块的命名规范,全部采用大驼峰命名法的英文字母命名(不得包含除此之外的字符)。

URL映射

URL映射是路由的一部分。作用是通过 URL 定位到具体处理的程序,分别有如下几种映射方式:

  • 域映射

  • 设备映射

  • 模块映射

  • 控制器映射

  • 控制器行为映射

命名空间

PpWeb 符合自动加载规范,内置不再提供类库文件的导入方法,采用命名空间方式定义和自动加载类库文件,有效的解决了多模块和类库之间的命名空间冲突问题,并且实现了更加高效的类库自动加载机制。

遵循 PpWeb 自动加载规范,需要给类库定义所在的命名空间,就能实现类库的自动加载。例如 \app\myapp\Index\IndexC 类库的命名空间定义为:

namespace app\myapp\Index; class IndexC{}

请注意

命名空间的路径与类库文件的目录一致(包括大小写)

实例化该类如下:

$class = new \app\myapp\Index\IndexC();

值得注意的是如果你需要调用 PHP 内置的类库,或者第三方没有使用命名空间的类库记得在实例化类库的时候加上 \ 符号,例如:

# 错误的用法$class = new stdClass(); # 正确的用法$class = new \stdClass();

依赖注入

依赖注入其实本质上是指对类的依赖通过构造器完成自动注入,用来更方便的管理类库依赖。

用下面这个代码片段举例:

namespace app\myapp\Index; use core\Mysqli; class IndexC{	public function show()	{		$db = new Mysqli();		$db->conn('BASE');	}}

如果以上的代码片段不使用依赖注入,则如下面这个代码片段:

namespace app\myapp\Index; class IndexC{	public function show()	{		$db = new \core\Mysqli();		$db->conn('BASE');	}}
前一篇创建一个应用下一篇 路由