图 1.1 显示了 Laravel 项目目录结构是什么样子:
图1.1 Laravel 项目目录结构
就如你看到这样,laravel下面只包含了4个文件夹,这4个文件夹下面有一些子文件夹,这种丰富的子文件夹在第一次看到是不是有压力?我会逐个介绍。我们大部分的开发工作都会在app/文件夹下面进行。
下面是各个文件夹和文件的基本介绍:
顶级文件夹 |
作用 |
app |
包含了站点的controllers(控制器),models(模型),views(视图)和assets(资源)。这些是网站运行的主要代码,你会将你大部分的时间花在这些上面。 |
bootstrap |
用来存放系统启动时需要的文件,这些文件会被如index.php这样的文件调用。 |
public |
这个文件夹是唯一外界可以看到的,是必须指向你web服务器的目录。它含有laravel框架核心的引导文件index.php,这个目录也可用来存放任何可以公开的静态资源,如css,Javascript,images等。 |
vendor |
用来存放所有的第三方代码,在一个典型的Laravel应用程序,这包括Laravel源代码及其相关,并含有额外的预包装功能的插件。 |
正如上面提到的,/app是所有的乐趣产生的地方,让我们更深入的看看这个目录的结构。
图 1.2 显示/app文件夹的详细信息:
图1.2 app 文件夹详细信息
下面是详细介绍:
文件的文件夹 |
作用 |
/app/config/ |
配置应用程序的运行时规则、 数据库、 session等等。包含大量的用来更改框架的各个方面的配置文件。大部分的配置文件中返回的选项关联PHP数组。 |
/app/config/app.php |
各种应用程序级设置,即时区、 区域设置(语言环境)、 调试模式和独特的加密密钥。 |
/app/config/auth.php |
控制在应用程序中如何进行身份验证,即身份验证驱动程序。 |
/app/config/cache.php |
如果应用程序利用缓存来加快响应时间,要在此配置该功能。 |
/app/config/compile.php |
在此处可以指定一些额外类,去包含由‘artisan optimize’命令声称的编译文件。这些应该是被包括在基本上每个请求到应用程序中的类。 |
/app/config/database.php |
包含数据库的相关配置信息,即默认数据库引擎和连接信息。 |
/app/config/mail.php |
为电子邮件发件引擎的配置文件,即 SMTP 服务器,From:标头 |
/app/config/session.php |
控制Laravel怎样管理用户sessions,即session driver, session lifetime。 |
/app/config/view.php |
模板系统的杂项配置。 |
/app/controllers |
包含用于提供基本的逻辑、 数据模型交互以及加载应用程序的视图文件的控制器类。 |
/app/database/migrations/ |
包含一些 PHP 类,允许 Laravel更新当前数据库的架构并同时保持所有版本的数据库的同步。迁移文件是使用Artisan工具生成的。 |
/app/database/seeds/ |
包含允许Artisan工具用关系数据来填充数据库表的 PHP 文件。 |
/app/lang/ |
PHP 文件,其中包含使应用程序易于本地化的字符串的数组。默认情况下目录包含英语语言的分页和表单验证的语言行。 |
/app/models/ |
模型是代表应用程序的信息(数据)和操作数据的规则的一些类。在大多数情况下,数据库中的每个表将对应应用中的一个模型。应用程序业务逻辑的大部分将集中在模型中。 |
/app/start/ |
包含与Artisan工具以及全球和本地上下文相关的自定义设置。 |
/app/storage/ |
该目录存储Laravel各种服务的临时文件,如session, cache, compiled view templates。这个目录在web服务器上必须是可以写入的。该目录由Laravel维护,我们可以不关心。 |
/app/tests/ |
该文件夹给你提供了一个方便的位置,用来做单元测试。如果你使用PHPUnit,你可以使用Artisan工具一次执行所有的测试。 |
/app/views/ |
该文件夹包含了控制器或者路由使用的HTML模版。请注意,这个文件夹下你只能放置模版文件。其他的静态资源文件如css, javascript和images文件应该放在/public文件夹下。 |
/app/routes.php |
这是您的应用程序的路由文件,其中包含路由规则,告诉 Laravel 如何将传入的请求连接到路由处理的闭包函数、 控制器和操作。该文件还包含几个事件声明,包括错误页的,可以用于定义视图的composers。 |
/app/filters.php |
此文件包含各种应用程序和路由筛选方法,用来改变您的应用程序的结果。Laravel 具有访问控制和 XSS 保护的一些预定义筛选器。 |
花了很多心思在建立和命名文件夹上,得到的就是一个具有良好的文件系统的应用程序。