在 Laravel 5 中的哪里放置特征?

Posted

技术标签:

【中文标题】在 Laravel 5 中的哪里放置特征?【英文标题】:Where to place traits in Laravel 5? 【发布时间】:2015-05-11 13:05:09 【问题描述】:

我正在使用 Laravel 5,我对在 Laravel 5 目录结构中放置特征文件的位置感到困惑。它们应该存在于公共、资源或任何其他目录中吗?

【问题讨论】:

【参考方案1】:

在放置方面,您应该将特征视为类。这意味着将它们放在app 目录中。您将特征放在哪里取决于您的偏好和特征的实际目的。

重要的是您将特征的命名空间调整为目录结构。例如,如果您的 trait 与您的控制器有关,并且您决定将其放在 app/Http/Controllers 文件夹中,那么请确保它具有正确的命名空间,即:

namespace App\Http\Controllers;

【讨论】:

这应该被标记为正确答案。在为模型创建特征时,我遵循相同的约定。【参考方案2】:

你可以把特质放在任何你想要的地方。但就放置而言,您应该将 trait 的命名空间调整为目录结构。

例如:你想创建一个 Traits 目录Traits >> SayHello.php

app >> Http >> Controllers >> Traits >> SayHello.php

  <?php
  namespace App\Http\Controllers\Traits; 

  trait SayHello
        public function hello()
        
              return "Hello";
        
  

app >> Http >> Controllers >> HomeController.php

  <?php
  namespace App\Http\Controllers; 

  use App\Http\Requests;
  use Illuminate\Http\Request;
  use App\Http\Controllers\Traits\SayHello;

  class HomeController extends Controller 

        use SayHello;

        public function index()
        
              // Called SayHello trait hello method
              return $this->hello();
        
  

【讨论】:

【参考方案3】:

我更喜欢在应用程序中创建一个名为 Traits 的目录。 这将增强代码库的可读性和可维护性。

例子:

namespace App\Traits;

use Exception;
use Illuminate\Http\Request;

    trait myTrait 
    //your code here
    

【讨论】:

【参考方案4】:

存储特征

为方便起见,在app 下创建一个名为Traits 的目录,并将我的自定义PHP 文件放在那里。每个文件都使用 Trait 的名称进行逻辑关联。通过在每个文件中使用 App/Traits 命名空间,当我在另一个文件中 use 时,框架能够找到我的文件。

示例使用代码:

<?php
namespace AppJobs;

use App/Jobs/Job;

use App/Traits/ExampleCode;

/**
 *  brief Example code using a Trait in a Laravel "Job"
 */
class AdminLoginJob extends Job implements SelfHandling

    use ExampleCode;

    /**
     * Call trait to print something. Note the use of "$this".
     * 
     * @return void
     */
    public function __construct()
    
        $this->printThis();
    
   /**
     * Do more stuff here.
     * 
     * @return void
     */
     public function handle()
    
        // never gets called in this example.
    

【讨论】:

以上是关于在 Laravel 5 中的哪里放置特征?的主要内容,如果未能解决你的问题,请参考以下文章

laravel 4 视图,在哪里放置基于类的作曲家

将迁移放在 Laravel 5.1 包中的啥位置?

Laravel 5 检查权限

Laravel 5 - 文件上传

laravel 队列重启

laravel 5.8 实现消息推送