Laravel 5命名空间

Mae*_*aeh 10 laravel laravel-5

我刚刚下载了Laravel 5并开始迁移到它.但是,我发现命名空间的必要使用真的很烦人.

除了混乱我的代码之外,我不觉得我从中获得了太多东西.

如何禁用命名空间要求?

luk*_*ter 20

我认为你不应该禁用或删除命名空间.命名空间的主要原因是避免与具有相同名称的类冲突.一旦应用程序变大,您将拥有具有相同名称的类.Framework源代码示例:

Illuminate\Console\ApplicationIlluminate\Foundation\Application

两者都被称为相同.只有因为命名空间,您才能导入正确的类.当然你也可以命名它们:

ConsoleApplicationFoundationApplication

但是,虽然命名空间通常仅在导入文件顶部的类时使用:

use `Illuminate\Console\Application`
Run Code Online (Sandbox Code Playgroud)

名称本身在代码中的任何位置都使用.这真是使你的代码混乱,类名太长的东西.

除了命名之外,命名空间还鼓励更好的结构并帮助知道文件的位置.那是因为Laravel的默认结构是PSR-4合规的.这意味着,如果你有一个控制器App\Http\Controllers\HomeController,你可以肯定,你会发现一个HomeController.phpapp/Http/Controllers.

我知道这一点,但在我正在进行的项目中并不需要它.

也许它对当前项目没有意义,但是习惯命名空间将有助于您将来处理更大的项目

作为一个没有自动导入的Sublime Text用户,它真的很痛苦

我不太了解Sublime Text,但CodeIntel可能会自动导入.否则请考虑切换到另一个编辑器/ IDE.我强烈推荐JetBrains PhpStorm


最后,如果您仍然不想使用命名空间,请继续使用Laravel 4或搜索遵循不太好的做法的另一个框架...


从应用类中删除命名空间

虽然完全不建议这样做,但至少可以删除应用程序中的某些命名空间.

例如,默认控制器命名空间App\Http\Controllers可以完全改为RouteServiceProvider:

protected $namespace = '';
Run Code Online (Sandbox Code Playgroud)

对于您的模型,您只需删除文件中的命名空间即可.但请记住,没有命名空间,PSR-4自动加载将不再起作用.您必须使用classmapin 自动加载文件composer.json

  • 命名空间很棒,在新项目上执行怪异的Symfony-ish结构则不然.朴素和缺乏混乱是令人感到温暖的L2-3-4,但5已经出局,现在没有办法回来. (6认同)
  • *或搜索另一个遵循**不太好的做法的框架......***+1 (5认同)