所以,我有一个问题,虽然基于 Laravel,但最终可能只是 PHP 中的一些基本问题,我要么错过了,要么忘记了。或者可能只是没有“教科书/干净/标准”的方法来做到这一点。
杂乱问题
无论如何,我在 Laravel 中创建了相当多的表单请求(这是一个相当大的“应用程序”),并且我经常对它们的包含是多么不必要的冗余感到震惊:
<?php
namespace App\Http\Controllers\Account;
use App\Http\Requests\SubscriberRequest;
use App\Http\Requests\SubscriberUpdateRequest;
use App\Http\Requests\SubscriberExtRequest;
use App\Http\Requests\SubscriberExtUpdateRequest;
class MailingListController extends BaseController
{
public function store(SubscriberRequest)
{
// code here
}
public function update(SubscriberUpdateRequest)
{
// code here
}
public function ExtCreate(SubscriberExtRequest)
{
// code here
}
public function ExtUpdate(SubscriberExtUpdateRequest)
{
// code here
}
}
替代方案
将其放在上面可以消除 Controller 本身的困惑,但最终会增加创建和维护的工作量。我发现这样做更容易:
<?php
namespace App\Http\Controllers\Account;
class MailingListController extends BaseController
{
public function store(\App\Http\Requests\SubscriberRequest)
{
// code here
}
public function update(\App\Http\Requests\SubscriberUpdateRequest)
{
// code here
}
public function ExtCreate(\App\Http\Requests\SubscriberExtRequest)
{
// code here
}
public function ExtUpdate(\App\Http\Requests\SubscriberExtUpdateRequest)
{
// code here
}
}
问题
显然,这两种方式都是“好”且“有效”的。这并不是一个高度优先的问题。但表单请求都来自同一个命名空间。当我使用几十个 Controller 时,打字/复制可能会变得乏味。
那么,考虑到所有这些,是否有一个“理想的”基于 PHP 类的解决方案来解决这个问题?如果做不到这一点,我应该诉诸应用程序范围的常量/变量吗? (或者还有其他人会推荐的技巧吗?)
最佳答案
如果您使用的是 php 7+
这是一个保持命名空间包含更干净的好方法。
use some\namespace\{ClassA, ClassB, ClassC as C};
关于php - Laravel/PHP 命名空间路径的简写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54186138/