Laravel Facades每个类的全球门面?

时间:2019-11-15 18:01:04

标签: php laravel laravel-6

门面的概念对我来说是新事物,Laravel用于组织它的结构似乎过于混乱。

new = []
with open ("3ex.txt","r") as f:
    for line in f:
        stripped = line.strip("\n")
        new.append(stripped)

new.sort() #sorts by letter
with open ("3ex.txt","w") as file:
    for k in new:
        file.write(k + "\n")

app / Facades / Facade.php

app    
└───Facades
│   │   Facade.php
│   │
│   └───Classes
│       │   Facade.php
│       │

应用程序/外观/类/Facade.php

<?php
namespace App\Facades;

use Illuminate\Support\Facades\Facade;

class Facade extends Facade
{
    protected static function getFacadeAccessor() {
        return 'Facade';
    }
}

我想要做的是将这两者结合在一起,所以我只在<?php namespace App\Facades\Classes; use Illuminate\Support\Facades\Facade; class Facade extends Facade { // Logic Here } 中有文件,但是由于Laravel依赖于显示的结构,因此似乎没有办法做到这一点。

是否有任何选择可以将其保存到单个文件中,所以我没有大量重复项?

1 个答案:

答案 0 :(得分:1)

使用类的名称空间时,可以在Facades之前添加前缀。例如,假设您有一个Foo类:

// app/Foo.php

namespace App;

class Foo
{
    public function bar() : string
    {
        return 'Hello world!';
    }
}

然后您可以在控制器中执行此操作:


namespace App\Http\Controllers;

use Facades\App\Foo;

class TestController
{
    public function __invoke() : void
    {
        echo Foo::bar(); // Hello world!
    }
}

使用这种方法,您无需“复制”文件。

有关实时外观的更多信息,请访问https://laravel.com/docs/5.8/facades#real-time-facades