Laravel / PHP命名空间路径的简写

时间:2019-01-14 17:09:29

标签: php laravel class namespaces

所以,我有一个问题,虽然基于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类的解决方案?而且,如果不这样做,我应该使用应用程序范围内的常量/变量吗? (或者有人会推荐其他技巧吗?)

1 个答案:

答案 0 :(得分:3)

如果您使用的是PHP 7 +

这是使您的名称空间包含项更整洁的好方法。

use some\namespace\{ClassA, ClassB, ClassC as C};