应用程序结构

简介

默认的 Laravel 应用程序结构是为了给无论构建大型还是小型应用程序都提供一个良好的开始。当然,你可以依照喜好自由地组织应用程序。Laravel 几乎没有限制任何类(class)文件的放置位置 - 只要 Composer 可以自动加载这些类即可。

根目录

一个全新创建的 Laravel 项目的根目录中包含以下子目录:

app 目录,如你所料,包含应用程序的核心代码。我们之后将会很快深入地探讨这个目录的细节。

bootstrap 目录包含的几个文件用于启动框架和配置自动加载功能,还有一个 cache 目录,用于存放框架自动生成的文件,能够加速框架启动。

config 目录,顾名思义,包含所有应用程序的配置文件。

database 目录包含了数据库迁移与数据填充文件。如果你不介意的话,也可以将 SQLite 数据库文件存放在这个目录中。

public 目录包含了 front controller and your assets (images, JavaScript, CSS, etc.). public 目录包含前端控制器和你的资源文件 (图片、JavaScript、CSS,等等)。

resources 目录包含你的视图、原始的资源文件 (LESS、SASS、CoffeeScript) 和本地化语言文件。

storage 目录包含编译后的 Blade 模板、基于文件的 session、文件缓存和其他由框架生成的文件。此目录下面包含三个子目录:app、framework 和 logs。app 目录用户存放应用程序所用到的任何任何文件;framework 目录用于存放由框架生成的文件和缓存文件;最后,logs 目录用于存放应用程序的日志文件。

tests 目录用于存放你的自动化测试文件。Laravel 默认自带了一个 PHPUnit 的实例。

vendor 目录用于存放 Composer 的依赖包。

App 目录

 

应用程序的“肉”就在app目录里面, 默认,这个目录命名空间就是App, 被Composer按照PSR-4自动加载标准来自动加载,你可以用app:name 这样的Artisan 命令来改变命名空间。

 

app目录跟着多个子目录,比如Console, Http, 和Providers等,想象Console 和 Http目录提供了要给API直达应用的核心, HTTP协议和CLI都是和应用交互的机制,但是没有真正包含应用逻辑, 也就是说, 他们是下达命令给你的应用的两种途径。 console 目录包含所有的Artisan命令, Http目录包含你的控制器,过滤器,和请求。

 

Jobs目录,当然,装着可以排队的任务, 任务可以被你的应用排队, 也可以被当前的请求生命周期来同步运行。

 

Events目录,就像你期望的,包含事件类, 事件可以被用来警告应用的其他部分,一个动作正在发生,提供了一定的灵活性和解耦。

 

监听者目录包含着事件的Handler类,handlers接收一个事件,然后运行相应的处理逻辑, 举例来说,一个 UserRegistered事件,然后被SendWelcomeEmail监听者处理。

 

Exceptions目录包含应用的 异常处理handler, 也不失为处理应用抛出任何异常的地方。

注意:在app目录中的许多类可以用Artisan命令来产生。 要查看可以使用的命令, 在终端机执行php artisan list make命令

#为应用程序设置命名空间

 

 

如前面所提到的,默认的应用程序命名空间为 App;然而,你还可以以应用程序的名称来作为命名空间,这可以简单地通过 app:name Artisan 命令来完成。例如:如果你的应用程序叫做 "SocialNet",你需要执行下面的命令:

php artisan app:name SocialNet      

当然,你仍然可以继续快乐地使用 App 命名空间,

Laravel5.1学习笔记10 系统架构2 应用程序结构的更多相关文章

  1. Laravel5.1学习笔记i14 系统架构6 Facade

    Facades 介绍  使用 Facades Facade 类参考   #介绍 Facades provide a "static" interface to classes th ...

  2. Laravel5.1学习笔记12 系统架构4 服务容器

    Service Container 介绍 绑定的用法  绑定实例到接口 上下文绑定 标签 解析 容器事件 #介绍 The Laravel service container is a powerful ...

  3. Laravel5.1学习笔记13 系统架构5 Contract

    Contract 简介 为什么要用 Contract? Contract 参考 如何使用 Contract 简介 Laravel 中的 Contract 是一组定义了框架核心服务的接口.例如,Illu ...

  4. Laravel5.1学习笔记11 系统架构3 服务提供者

    服务提供者 简介 写一个服务提供者 Register注册方法 Boot 方法 注册提供者 缓载提供者 简介 Service providers are the central place of all ...

  5. Laravel5.1学习笔记9 系统架构1 请求生命周期 (待修)

    Request Lifecycle Introduction Lifecycle Overview Focus On Service Providers Introduction When using ...

  6. ODI学习笔记2--ODI产品架构

    ODI学习笔记2--ODI产品架构 ODI产品架构: ODI提供了以下几种管理工具:Designer 用于定义数据转换逻辑,这是最常用的开发工具,大部分的开发任务,包括data store的定义,in ...

  7. APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause

    转载注明出处:Windeal学习笔记 kil和raise kill()用来向进程或进程组发送信号 raise()用来向自身进程发送信号. #include <signal.h> int k ...

  8. thinkphp学习笔记10—看不懂的路由规则

    原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...

  9. 《C++ Primer Plus》学习笔记10

    <C++ Primer Plus>学习笔记10 <<<<<<<<<<<<<<<<<&l ...

随机推荐

  1. uva253 Cube painting(UVA - 253)

    题目大意 输入有三种颜色判断两个骰子是否相同 思路(借鉴) ①先用string输入那12个字符,然后for出两个骰子各自的字符串 ②这里用的算法是先找出第一个的三个面与第二个的六个面去比较,如果找到相 ...

  2. npm和gulp学习

    npm的使用 node Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,是一种JavaScript语言运行平台,和浏览器这个运行平台是同一个概念. npm np ...

  3. Python - 面对对象(基础)

    目录 Python - 面对对象(基础) 一. 概述 二. 创建类和对象 三. 面向对象三大特征 封装 继承 多态 Python - 面对对象(基础) 一. 概述 面向过程:根据业务逻辑从上到下写垒代 ...

  4. OpenStack命令行工具与API

    Openstack命令行工具 我们推荐Openstack命令行工具和Openstack的Dashboard两者结合使用.一些用户由于使用过其他云技术背景的,可能会使用EC2兼容的API,相对于我们需要 ...

  5. Object Detection: To Be Higher Accuracy and Faster

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51597496 在深度学习中有一类研究热 ...

  6. JSON中getInt()和optInt()的区别

    最近在用org.json这个包解析json的时候,发现谷歌提供两种不同的数据类型获取方法,比如说针对Int类型,提供了getInt()和optInt()两种方式,谷歌文档中的说明如下: 那么这两者有什 ...

  7. noip模拟赛 解谜游戏

    题目描述LYK进了一家古董店,它很想买其中的一幅画.但它带的钱不够买这幅画.幸运的是,老板正在研究一个问题,他表示如果LYK能帮他解出这个问题的话,就把这幅画送给它.老板有一个n*m的矩阵,他想找一个 ...

  8. Windows安装php Oracle扩展

    前言 去IOE的浪潮下,很多大型公司古董级的系统还在使用IOE设备.新东家有些年头的系统都是使用Oracle数据库,为了省事,新架构下的业务直接通过编程语言API操作Oracle数据库,安装相关扩展对 ...

  9. spring boot项目Intellij 打包

    spring boot项目Intellij 打包 学习了:http://blog.csdn.net/hzt_fighting_up/article/details/78174291 在edit con ...

  10. Eclipse启动时提示fail to create the Java Virtual Machine问题的解决

    今天偶然打开Eclipse.发现无法打开,出现例如以下提示: 后来经过上网查询.发现是eclipse.ini文件的问题,打开eclipse安装文件夹下的eclipse.ini文件: -startup ...