琯琯博客 纸上得来终觉浅,绝知此事要躬行。

Laravel 系列教程(三)目录结构

琯琯
2017-12-29

我之前写过详细的thinkphp目录设计总结;

thinkphp的目录结构设计经验总结 laravel的话;

换laravel真的需要勇气; 去面对六眼飞鱼;

目录结构首先就够让新手懵一会了;

这么多目录可怎么下手;

既然是面向thinkphp开发者;

我这里准备先以tp的方式讲;

laravel-bjyadmin
├─app
│  ├─Console
│  ├─Exceptions
│  ├─Http  请求处理
│  │  ├─Controllers  控制器目录
│  │  ├─Middleware
│  ├─Providers
│  ├─Library      [+] 自定义类库目录
│  │  ├─Function  [+] 自定义函数库
│  │  ├─Org       [+] 自定义类
│  ├─Models       [+] 模型文件夹
├─bootstrap
├─config 配置项
├─database
├─public
├─resources
│  ├─assert
│  ├─lang
│  ├─views 视图
├─routes 路由
├─storage
├─tests

为了尽快入门;

我把目录简化了下;

先以我备注了中文的目录为主;

其他的目录先暂时忽略了;

laravel也是MVC框架;

咱先掌握了这最基本的三项;

就可以初步的写项目了;

thinkphp-bjyadmin
├─Application 项目逻辑目录
│  ├─Common 公共模块
│  │  ├─Common  公共函数目录
│  │  │  ├─functioin.php 公共函数php文件
│  │  ├─Conf  公共配置文件目录
│  │  │  ├─config.php  tp的配置 用于覆盖框架默认配置项
│  │  │  ├─db.php  数据库配置 用户名 密码等
│  │  │  ├─webconfig.php  项目的配置;
网站名;
是否开启网站等
│  │  ├─Controller  公共控制器目录
│  │  │  ├─BaseController.class.php 应用最基础的控制器
│  │  │  ├─HomeBaseController.class.php  Home基础控制器继承BaseController
│  │  │  ├─AdminBaseController.class.php  Admin基础控制器继承BaseController
│  │  │  ├─UserBaseController.class.php  User基础控制器继承BaseController
│  │  │  ├─...
│  │  ├─Model  公共模型目录
│  │  │  ├─BaseModel.class.php  应用最基础的Model
│  │  │  ├─ArticleModel.class.php 文章model  继承BaseModel
│  │  │  ├─UserModel.class.php  用户model 继承BaseModel
│  │  │  ├─...
│  │  ├─Tag  公共标签目录
│  │  │  ├─My.class.php  自定义的标签库
│  │  │  ├─...
│  ├─Home  Home模块
│  │  ├─Controller  Home控制器目录 继承HomeBaseController
│  │  │  ├─ArticleController.class.php 文章控制器目录
│  │  │  ├─IndexController.class.php  首页控制器
│  │  │  ├─ ...
│  ├─Admin  Admin模块
│  │  ├─Controller  Admin控制器目录 继承AdminBaseController
│  │  │  ├─IndexController.class.php  后台管理首页控制器
│  │  │  ├─ ...
│  ├─User  User模块
│  │  ├─Controller  User控制器目录 继承UserBaseController
│  │  │  ├─IndexController.class.php  用户个人中心首页控制器
│  │  │  ├─ ...

thinkphp是以模块划分项目的;

如上我在 laravel-bjyadmin 示例中就划分了 Common 公共模块;

还有 Admin、Home、User模块;

路由就是自动绑定的 模块/控制器/方法 三级;

模型、控制器、视图、配置项等都是在模块下面;

反观 laravel;

已经可以初窥自由了;

但是这种自由也会让新手略有不知所措;

那么我们依然可以以 thinkphp 的模式来理解;

M;

laravel 没有强制定义模型的目录;

默认给了一个 User 模型就是直接给扔到 app 目录下了;

为了防止模型比较多的时候把 app 目录下搞的乱七八糟;

我这里是在 app 目录下建了一个 Models 目录;

所有的模型都放在app/Models目录下;

app
├─Models 模型目录
│  ├─Category.php  分类模型
│  ├─Tag.php  标签模型
│  ├─Article.php  文章模型

C;

把控制器放在视图前面讲;

控制器是在app/Http/Controllers目录下;

我依然以 thinkphp-bjyadmin 的结构来划分;

app
├─Http 请求处理目录
│  ├─Controller  控制器目录
│  │  ├─admin  后台Admin模块
│  │  │  ├─IndexController.php 后台首页控制器
│  │  │  ├─CategoryController.php 分类管理控制器
│  │  ├─home   前台Home模块
│  │  │  ├─IndexController.php 前台首页控制器
│  │  │  ├─ArticleController.php 文章展示控制器
│  │  ├─user   用户User模块
│  │  │  ├─IndexController.php 用户首页控制器
│  │  │  ├─TagController.php 标签管理控制器

V;

html视图都是在 resources/view 目录下;

视图就可以按照控制器的目录来了;

resources
├─view 视图目录
│  ├─admin  后台admin模块下的视图目录
│  │  ├─index  后台admin模块Index控制器下的视图目录
│  │  │  ├─index.blade.php 后台admin模块Index控制器下index方法的视图文件
│  │  ├─category   后台admin模块Category控制器下的视图目录
│  │  │  ├─index.blade.php 后台admin模块Category控制器下index方法的视图文件
│  │  │  ├─create.blade.php 后台admin模块Category控制器下create方法的视图文件
│  ├─home  前台Home模块下的视图目录
│  │  ├─index  前台Home模块Index控制器下的视图目录
│  │  │  ├─index.blade.php 前台Home模块Index控制器下index方法的视图文件
│  │  ├─article   前台Home模块Article控制器下的视图目录
│  │  │  ├─index.blade.php 前台Home模块Article控制器下index方法的视图文件
│  │  │  ├─create.blade.php 前台Home模块Article控制器下create方法的视图文件
│  ├─user  用户User模块下的视图目录
│  │  ├─index  用户User模块Index控制器下的视图目录
│  │  │  ├─index.blade.php 用户User模块Index控制器下index方法的视图文件
│  │  ├─tag   用户User模块Tag控制器下的视图目录
│  │  │  ├─index.blade.php 用户User模块Tag控制器下index方法的视图文件
│  │  │  ├─create.blade.php 用户User模块Tag控制器下create方法的视图文件

thinkphp 模块下是有公共函数文件 function.php ;

laravel 没有定义目录;

我是给定义在 app/Library/Function/helpers.php ;

thinkphp 模块下是有配置项文件的;

laravel 没有按模块;

而是统一放在了 跟目录的 config 目录下;

就 mvc 而言的话;

laravel 多了一个定义路由的过程;

路由都是在 routes/web.php 文件中定义的;

这里寥寥几句简单把用到的目录先介绍下;

有个初步的印象即可;

后续再详细讲解每个模块;

我已经在我最新的 laravel-bjyblog 项目中使用这种结构;

想在完整的项目中理解的话;

可以关注 用laravel重构的白俊遥博客开源代码laravel-bjyblog 现在是在内测中;

可能会有大的改动;

不过用来参考还是可以的;

前台的路由为了兼容 thinkphp-bjyblog 的设计;

没有完全按照本篇文章的讲解;

(完)

原文链接


相关文章

评论

内容导航