自从用 Laravel4做了个小网站,使用了数据库ORM Eloquent, 就放下了一段时间,想不到这个与Asp.net MVC 有着异曲同工之妙的框架已经出了下个版本,而且还有不小的改动,因此不得不从头过一次,顺便更新一下知识点。
下面内容摘自Laravel 5.0 系列, 目录结构和命名空间
Laravel从4升级到5 ,改变的不只是文件的组织方式,而且是思想上的重大转变。 废话不多说, 新版本的目录。
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 等。