Laravel Facades 每个个体的全局 Facade class?
Laravel Facades global Facade for each individual class?
Facades 的概念对我来说是新事物,Laravel 用来组织它的结构似乎过于混乱。
app
└───Facades
│ │ Facade.php
│ │
│ └───Classes
│ │ Facade.php
│ │
app/Facades/Facade.php
<?php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class Facade extends Facade
{
protected static function getFacadeAccessor() {
return 'Facade';
}
}
app/Facades/Classes/Facade.php
<?php
namespace App\Facades\Classes;
use Illuminate\Support\Facades\Facade;
class Facade extends Facade
{
// Logic Here
}
我想做的是将这两个结合在一起,所以我只有 app/Facades
中的文件,但似乎没有办法做到这一点,因为 Laravel 依赖于显示的结构。
是否有任何选项可以将其放入单个文件中,这样我就不会出现大量重复?
当您使用 class' 命名空间时,您可以在前面添加 Facades
。例如,假设您有一个 Foo
class:
// 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!
}
}
使用这种方法,您不需要 "duplicate" 您的文件。
有关实时立面的更多信息:https://laravel.com/docs/5.8/facades#real-time-facades
Facades 的概念对我来说是新事物,Laravel 用来组织它的结构似乎过于混乱。
app
└───Facades
│ │ Facade.php
│ │
│ └───Classes
│ │ Facade.php
│ │
app/Facades/Facade.php
<?php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class Facade extends Facade
{
protected static function getFacadeAccessor() {
return 'Facade';
}
}
app/Facades/Classes/Facade.php
<?php
namespace App\Facades\Classes;
use Illuminate\Support\Facades\Facade;
class Facade extends Facade
{
// Logic Here
}
我想做的是将这两个结合在一起,所以我只有 app/Facades
中的文件,但似乎没有办法做到这一点,因为 Laravel 依赖于显示的结构。
是否有任何选项可以将其放入单个文件中,这样我就不会出现大量重复?
当您使用 class' 命名空间时,您可以在前面添加 Facades
。例如,假设您有一个 Foo
class:
// 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!
}
}
使用这种方法,您不需要 "duplicate" 您的文件。
有关实时立面的更多信息:https://laravel.com/docs/5.8/facades#real-time-facades