Laravel5.1 学习笔记1, 目录结构和命名空间(待修)
自从用 Laravel4做了个小网站,使用了数据库ORM Eloquent, 就放下了一段时间,想不到这个与Asp.net MVC 有着异曲同工之妙的框架已经出了下个版本,而且还有不小的改动,因此不得不从头过一次,顺便更新一下知识点。
下面内容摘自Laravel 5.0 系列, 目录结构和命名空间
Laravel从4升级到5 ,改变的不只是文件的组织方式,而且是思想上的重大转变。 废话不多说, 新版本的目录。   
 
app
Console
Commands
Events
Exceptions
Http
Controllers
Auth
Middleware
Requests
Jobs
Listeners
Providers
bootstrap
cache
config
database
factories
migrations
seeds
public
resources
assets
lang
views
storage
app
framework
cache
sessions
views
logs
tests
vendor
而在新的目录结构下, 它只包括应用逻辑(包括业务领域), 并且遵循 PSR-4 规范来进行类的自动加载。
xxx 应该放在哪里?
如果 xxx 代表的是某个类, 或者可以写成一个类的话, 它应该放在 app/ 下的某个地方. 如果 xxx 代表的是 Eloquent model, 它应该放在 app/ 下的某个地方。如果 xxx 要通过 Web 服务器来处理发送给请求流(比如 Controllers 和 FormRequests), 它应该放在 app/Http 目录下。如果 xxx 要通过 CLI (命令行界面) 来处理请求, 它应该放在 app/Console 目录下。如果 xxx 在以前的版本中是放在 routes.php 文件中(但它不是一个路由定义), 或者是放在 start.php 文件中, 那么现在它应该写到某个 Service Provider 里。如果 xxx 是一个过滤器(filter), 它应该放在app/Http/Filters 目录里一个专属于它的类中。
如果 xxx 不属于上面的任何一种情况, 那么从目录结构就可以很清楚看出它应该放在哪里了。
代码中的命名空间(namespace)是怎么工作的?
默认情况下, 每个 Laravel 应用都有一个代表应用类的顶级命名空间, 一般来说这个命名空间是 "App", 它对应的着 app/ 目录, 遵循 PSR-4 规范。
但你只要执行一个 artisan 命令, 可以很轻松地修改 "App/" 下所有实例的根命名空间。
比如新建了一个 Laravel 项目之后, 可以马上执行下面的 artisan 命令, 把根命名空间从 "App" 改为 "Confomo":
$ php artisan app:name Confomo
执行完这个命令之后, app/ 目录下的所有类都被归入 "Confomo" 命名空间下下.composer.json 文件里的 PSR-4 自动加载语句会自动更新, Laravel 也清楚应该在哪里去寻找该命名空间下的 filters, controlers 等。下下
composer.json 文件里的 PSR-4 自动加载语句会自动更新, Laravel 也清楚应该在哪里去寻找该命名空间下的 filters, controlers 等。
Laravel5.1 学习笔记1, 目录结构和命名空间(待修)的更多相关文章
- thinkphp学习笔记1—目录结构和命名规则
		
原文:thinkphp学习笔记1-目录结构和命名规则 最近开始学习thinkphp,在下不才,很多的问题看不明白所以想拿出来,恕我大胆发在首页上,希望看到的人能为我答疑解惑,这样大家有个互动,学起来快 ...
 - Solr6.7 学习笔记(01) -- 目录结构
		
Solr解压后的目录结构 --contrib: Solr的一些扩展 --analysis-extras: 包含一些文本分析组件及其依赖 --clustering: 包含一个用于集群搜索结果的引擎 -- ...
 - python学习笔记:目录结构
		
"项目目录结构"其实也是属于"可读性和可维护性"的范畴. 目录组织方式 关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构.在Sta ...
 - Linux Shell 学习笔记 一 目录结构
		
以Red Hat Enterprise Linux 各版本为例,RHEL中目录具体作用如下, /bin 存放普通用户使用的命令 /sbin 存放管理员可以执行的命令 /home ...
 - Angular5学习笔记 - 项目目录结构(二)
		
一.项目总体目录 README.md:项目的说明和一些常用指令说明,建议看看. e2e:看不懂暂时空着??? node_modules/:存放npm下载的组件(npm install 后自动产生,不需 ...
 - Magento学习第一课——目录结构介绍
		
Magento学习第一课--目录结构介绍 一.Magento为何强大 Magento是在Zend框架基础上建立起来的,这点保证了代码的安全性及稳定性.选择Zend的原因有很多,但是最基本的是因为zen ...
 - Go语言学习笔记十: 结构体
		
Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...
 - matlab学习笔记12_3串联结构体,按属性创建含有元胞数组的结构体,filenames,isfield,isstruct,orderfields
		
一起来学matlab-matlab学习笔记12 12_3 结构体 串联结构体,按属性创建含有元胞数组的结构体,filenames,isfield,isstruct,orderfields 觉得有用的话 ...
 - NDK学习二: NDK目录结构
		
NDK目录结构 NDK下载好之后目录结构如下: 目录名 描述 build 存放和编译相关的脚本文件,最外面的ndk-build就是调用该目录下的makefile文件,其中mak ...
 
随机推荐
- swift 关键字willSet 和 didSet
			
// 下面是苹果给出的解释,就是在给属性设置新值的时候,可以在设置前和设置后做一些处理,这两个关键字就好像对该属性变化的监控 If you don’t need to compute the prop ...
 - Luogu P1041 [2003NOIP提高组]传染病控制
			
P1041 传染病控制 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染 ...
 - 44.bucket filter:统计各品牌最近一个月的平均价格
			
课程大纲 GET /tvs/sales/_search { "size": 0, "query": { "term": { &quo ...
 - grafana简介
			
grafana一般是和一些时间序列数据库进行配合来展示数据的,例如:Graphite.OpenTSDB.InfluxDB等 grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去 ...
 - sql简单优化点滴
			
select uppagent.agent_no AGENT_NO, ISNULL(countsubagent,0) REFERRAL_AGENT_NUM, ISNULL(countsubcustom ...
 - webpack教程——css的加载
			
首先要安装css的loader npm install css-loader style-loader --save-dev 然后在webpack.config.js中配置如下代码 意思是先用css- ...
 - AngularJS:一行JS代码实现控件验证效果
			
如上图所示,我们需要实现如下这些验证功能: 控件都是必输控件 都需要控制最大长度 第一次打开页面,控件不能显示为错误状态 输入内容再清空后,必输控件需要显示为错误状态 只有所有输入合法后,发布按钮才能 ...
 - UVA 10891 区间DP+博弈思想
			
很明显带有博弈的味道.让A-B最大,由于双方都采用最佳策略,在博弈中有一个要求时,让一方的值尽量大.而且由于是序列,所以很容易想到状态dp[i][j],表示序列从i到j.结合博弈中的思想,表示初始状态 ...
 - Unity3d-反编译C#和提取资源
			
使用MonoDevelop查看代码 1.解压缩一个Ipa文件,找到如下目录 2.拖拽一个Assembly-CSharp.dll文件到MonoDevelop工具栏,即可查看C#代码 其他C#反编译工具: ...
 - spark streaming updateStateByKey 使用方法
			
updateStateByKey 解释: 以DStream中的数据进行按key做reduce操作,然后对各个批次的数据进行累加 在有新的数据信息进入或更新时.能够让用户保持想要的不论什么状.使用这个功 ...