自从用 Laravel4做了个小网站,使用了数据库ORM Eloquent, 就放下了一段时间,想不到这个与Asp.net MVC 有着异曲同工之妙的框架已经出了下个版本,而且还有不小的改动,因此不得不从头过一次,顺便更新一下知识点。

下面内容摘自Laravel 5.0 系列, 目录结构和命名空间

Laravel从4升级到5 ,改变的不只是文件的组织方式,而且是思想上的重大转变。 废话不多说, 新版本的目录。

public
resources
assets
lang
views
storage
app
framework
cache
sessions
views
logs
tests
vendor
而在新的目录结构下, 它只包括应用逻辑(包括业务领域), 并且遵循 PSR-4 规范来进行类的自动加载。
 
由此带来的是, Laravel 相关的配置文件保存在了自己的独立目录下, 资源文件--语言和视图--保存在了自己的独立目录下, 数据库相关的信息也保存在了它们自己的目录下。
 
最后,原来写在过程文件(比如 filters)中的代码现在移到了类和 Service Providers 中. 可以减少过程代码, 使执行更容易预测。同时也鼓励对 Service Providers 的用户态使用(即 "在我们的代码里,而不是在框架代码里")。

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 等。

相关文章:

  • 2022-01-05
  • 2021-10-18
  • 2022-01-12
  • 2021-10-24
  • 2021-06-09
  • 2021-07-25
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-07
  • 2021-11-20
  • 2021-12-13
  • 2021-11-29
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案