在 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 中的哪里放置特征?的主要内容,如果未能解决你的问题,请参考以下文章