所以,我有一个问题,虽然基于Laravel,但最终可能只是我遗漏或忘记的PHP基本知识。否则可能只是没有做到这一点的“教科书/干净/标准”方法。
混乱的问题
无论如何,我在Laravel中创建了相当数量的Form Requests(这是一个相当大的“应用程序”),而我不断为它们包含的不必要的冗余而感到震惊:
<?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
}
}
替代方案
将其放到上方可以将杂物移出控制器本身,但最终需要进行更多的创建和维护工作。我发现像这样做起来会更容易:
<?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
}
}
问题
很显然,这两种方式都是“精细”和“有效”的。这几乎不是一个高度优先的问题。但是表单请求都来自同一个名称空间。当我与几十个控制器一起工作时,键入/复制会变得很乏味。
因此,考虑到所有这些,是否存在针对此问题的“理想的”基于PHP类的解决方案?而且,如果不这样做,我应该使用应用程序范围内的常量/变量吗? (或者有人会推荐其他技巧吗?)
答案 0 :(得分:3)
如果您使用的是PHP 7 +
这是使您的名称空间包含项更整洁的好方法。
use some\namespace\{ClassA, ClassB, ClassC as C};