模块及命名空间

在CrossPHP项目中, 默认的模块结构如下

├─app

│ └─web

│ ├─controllers

│ └─views

├─modules

│ └─admin

app按文件夹划分, 每个app都包含独MVC模式中的CV层, 以及V层模板和布局文件. Modules包含各app公用的模块, 传统框架的Model只是Module的一个成员

控制器

控制器位于对应app的controllers文件夹下, 以web为例, 控制器的命名空间为:

namespace app\web\controllers;

规则如下:

app\文件夹名称\controllers

依据此规则, 假设名为admin的app的控制器命名空间就为:

namespace app\admin\controllers;

视图控制器

与传统的MVC框架比, 多了视图控制器的概念, 视图控制器命名和控制器命名保持一致, 并在结尾增加View. 假设名称是Main的控制器, 对应的视图控制器的名称就为MainView, MainView.php文件放在app/web/views文件夹中, MainView类的命名空间为:

namespace app\web\views;

视图控制器用于处理模板数据, 在视图控制器中定义的方法, 可以在模板中直接调用. 这很轻易的实现了对模版的扩展. 当要从HTML视图切换到JSON\XML或未来的某种格式时, 只需要先在视图控制器中添加对应处理的方法, 再把app配置文件中的视图格式配置指定为方法名就可以了(sys->display).

Modules

Module不是单一的Model, 在现代WEB开发中, 数据来源可能需要多个Model配合, 比如先从缓存Model中检查缓存数据是否存在, 如果存在就直接返回, 不存在就从数据库Model中去获取数据, 保存到缓存, 以备下次使用. 传统的Model只是Module中的一个成员.

Module服务于所有的app, 以保持不同app中数据来源的一致性. Module根据功能来划分, 不同的功能分别放到不同的文件夹, 假设有admin, user, article三个功能模块, 他们在Modules文件夹下的路径分别是:

modules/admin

modules/user

modules/articles

他们的类命名空间分别是:

namespace modules\admin;

namespace modules\user;

namespace modules\articles;

自定义模块

除了以上默认的模块以外, 你也可以在自己的项目中自定义模块, 自定义模块的命名规则如下:

自定义模块名称\子模块名称

自定义模块名称即文件夹名称, 假设现在要定义验证模块validate, 首先在项目根目录下新建文件夹validate, 创建好的项目结构如下:

├─app

│ └─web

│ ├─controllers

│ └─views

├─modules

└─validate

在validate下新建一个类文件UserValidate.php, 输入以下内容用于验证用户相关信息:

namespace validate;

class UserValidate

{

static function name($user_name)

{

echo $user_name;

}

}

使用自定义模块

我们可以在项目的任何位置使用这个用户验证类, 只需在要使用的类里注明命名空间就可以了, 在控制器中的使用方法如下:

namespace app\web\controllers;

use validate\UserValidate;

class Main extends Web

{

function index()

{

UserValidate::name("abc");

}

}

你可以根据项目需求自定义各种模块, 更优雅的完成工作

php框架启动过程,框架启动方式 - CrossPHP 框架文档相关推荐

  1. ARM 之八 Cortex-M/R 内核启动过程 / 程序启动流程(基于IAR)

      在前面的文章<ARM 之 Cortex-M/R 内核启动过程 / 程序启动流程(基于ARMCC)>中已经介绍过了 Cortex-M/R 内核相关内容.这里基于 IAR 的启动流程与之前 ...

  2. tomcat启动过程-start启动

    tomcat源码系列导航栏 tomcat源码分析环境搭建 tomcat启动过程-load初始化 tomcat启动过程-start启动 目录 前言 启动流程 启动入口main函数 代码块一 start ...

  3. 后台管理系统框架搭建 | CRUD实现 | MP代码生成器 | Swagger2在线文档

    day01 微信商城后台管理系统框架搭建 | CRUD实现 | MP代码生成器 | Swagger2在线文档 创建项目 项目名含大写字母会报异常 啥都不选 之后点完成 根项目的pom依赖如下,部分依赖 ...

  4. 基于python-实训基地管理系统-django框架计算机毕业设计源码+系统+数据库+lw文档+调试部署

    基于python-实训基地管理系统-django框架计算机毕业设计源码+系统+数据库+lw文档+调试部署 基于python-实训基地管理系统-django框架计算机毕业设计源码+系统+数据库+lw文档 ...

  5. 基于python食品安全溯源管理系统django框架计算机毕业设计源码+系统+数据库+lw文档+调试部署

    基于python食品安全溯源管理系统django框架计算机毕业设计源码+系统+数据库+lw文档+调试部署 基于python食品安全溯源管理系统django框架计算机毕业设计源码+系统+数据库+lw文档 ...

  6. java计算机毕业设计框架的报修系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计框架的报修系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计框架的报修系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目架构:B/S架构 ...

  7. 基于python摄影作品展示网站django框架计算机毕业设计源码+系统+数据库+lw文档+调试部署

    基于python摄影作品展示网站django框架计算机毕业设计源码+系统+数据库+lw文档+调试部署 基于python摄影作品展示网站django框架计算机毕业设计源码+系统+数据库+lw文档+调试部 ...

  8. SSM框架网上水果超市的设计与实现+文档

     博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 SSM框架网上水果超市的设计与实现+文档 视频效果 https://www.bi ...

  9. Documentum常见问题4—如何通过vlink方式直接查看文档内容

    问题4-如何通过vlink方式直接查看文档内容 webtop6.5以上版本中,增加了vlink方式可直接查看文档内容,这里有几种方式可直接通过链接访问文档对象. 1)已知文档对象ID,通过链接直接下载 ...

  10. Word开发工具Aspose.Words功能演示:在C ++中以编程方式在Word文档中添加或删除页眉和页脚

    Word文档中的页眉和页脚用于格式化和显示重要信息,例如主题,章节,页码,Copywrite等.以编程方式使用Word文档时,可能需要添加或删除页眉和页脚.为此,本文将教您如何使用C ++在Word文 ...

最新文章

  1. JS 版的pnp in_array($str,$arr)
  2. xhprof在windows下面的安装和使用[上](windows版本)
  3. python在金融工程领域包括_金融工程专业对计算机的能力要求到底是什么?
  4. mysql 锁 代码_MySQL中的锁实例
  5. 会移动的文字(Marquee)
  6. gateway动态路由_无语!SpringCloud Gateway动态路由之Nacos,我已经讲得很清楚了
  7. HTML5+CSS3---弹性盒子模型
  8. Mysql的数据库引擎 区别特点_mysql数据库存储引擎及区别
  9. CSDN Blog升级通告
  10. 《我也能做CTO之程序员职业规划》之二:做CTO的苹果定律
  11. 99个wordpress经典插件
  12. 喜报!木兰宽松许可证通过OSI认证,成为首个中英双语国际开源许可证!
  13. 如何查询目标计算机的ip地址,基于Wireshark获取目标ip地址
  14. 微软模拟飞行10厦门航空涂装_《微软飞行模拟》或很快迎来技术公测
  15. dos命令中DATE:~0,10输出日期格式名称格式/改为-
  16. openstack(云主机热迁移)
  17. EasyMesh_Specification_v4中英文
  18. 解决java导出excel因数据量大占内存的问题
  19. matlab 理想变压器,Simscape Electrical
  20. 网盘江湖混战难打 百度为何坚持加码?

热门文章

  1. Harmony OS — RoundProgressBar圆形进度条
  2. Flutter进阶第7篇: 调用原生硬件Api实现照相机拍照和相册选择 以及拍照上传到服务器
  3. JSP — 如何设置jsp中cookie的过期时间
  4. Insufficient space for shared memory file 解决办法
  5. 品牌logo在EDM数据营销中的运用
  6. 001. 为input type=text 时设置默认值
  7. 迷你sql profile,给缺少sql跟踪的朋友们
  8. 从程序员到项目经理(28):该死的结果导向(只看结果,不问过程到底行不行?)...
  9. jquery 源码分析
  10. flash特效原理:图片滑动放大效果(3)