标签: laravel-facade

在laravel外墙上使用依赖注入

我已经阅读了许多消息来源,暗示laravel facade最终是为了方便而存在,而且应该注入这些类以允许松散耦合.甚至Taylor Otwell也有一篇文章解释了如何做到这一点.似乎我不是唯一一个想到这一点的人.

use Redirect;

class Example class
{
    public function example()
    {
         return Redirect::route("route.name");
    }
}
Run Code Online (Sandbox Code Playgroud)

会成为

use Illuminate\Routing\Redirector as Redirect;

class Example class
{
    protected $redirect;

    public function __constructor(Redirect $redirect)
    {
        $this->redirect = $redirect
    }

    public function example()
    {
         return $this->redirect->route("route.name");
    }
}
Run Code Online (Sandbox Code Playgroud)

这很好,除了我开始发现一些构造函数和方法开始采用四个+参数.

由于Laravel IoC 似乎只注入类构造函数和某些方法(控制器),即使我有相当精益的函数和类,我发现类的构造函数正在填充所需的类,然后将其注入到需要的方法.

现在我发现如果我继续这种方法,我将需要自己的IoC容器,如果我使用像laravel这样的框架,感觉就像重新发明轮子一样?

例如,我使用服务来控制业务/视图逻辑而不是处理它们的控制器 - 它们只是路由视图.所以控制器首先取其对应的service,然后是parameter其url.一个服务功能还需要检查表单中的值,因此我需要RequestValidator.就像那样,我有四个参数.

// MyServiceInterface is binded using the laravel container
use Interfaces\MyServiceInterface;
use Illuminate\Http\Request; …
Run Code Online (Sandbox Code Playgroud)

php dependency-injection laravel laravel-facade

43
推荐指数
1
解决办法
5655
查看次数

未定义的类路由(Lapvel in PhpStorm)

如何在PhpStorm中修复此警​​报?

在此输入图像描述

还有如何获得Route和其他Facades的自动完成功能?

autocomplete phpstorm laravel laravel-facade

38
推荐指数
3
解决办法
2万
查看次数

Laravel输入门面与请求门面

基于Input Facade APIRequest Facade API,Input :: get()方法似乎是唯一的区别.我在这里错过了什么吗?

我知道验证可以应用于请求,但我不确定输入外观是否也是如此.

php laravel-5 laravel-facade

19
推荐指数
1
解决办法
9071
查看次数

Laravel:依赖注入与Facades?

什么,我之前已经做是注射使用构造只有我的模型,并使用外墙为Laravel的提供的类,即Session,Auth,Validator等等,例如.如果我通过构造注入每个类(我的或Laravel的)并通过$this->..语法使用它或者我应该使用构造函数注入我自己的类并使用Facade来完成Laravel提供的任何事情,这是一个好主意吗?

更具体地说,这是我的控制器通常的样子:

class MyController extends BaseController 
{
    public function __construct( User $user, Bookmark $bookmark ) {
        $this->user = $user;
        $this->bookmark = $bookmark
    }

    public function foobar ( ) {
        $user_id = Input::get('bar');
        ...
        Session::get('someInfo');
        ...
        return Redirect::to('/');
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我应该像控制器那样构建我的方法,而不是吗?

class MyController extends BaseController 
{
    public function __construct( User $user, Bookmark $bookmark, Input $input, Session $session, Redirect $redirect ) …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-facade

8
推荐指数
1
解决办法
1677
查看次数

如何覆盖Laravel Facade方法?

我想覆盖Laravels的Mail的类Facade方法发送(只是拦截它强制一些检查然后如果它通过触发parent :: send())

做这个的最好方式是什么?

laravel laravel-facade

8
推荐指数
1
解决办法
2345
查看次数

Laravel - Facades与辅助方法的表现

我想知道在laravel 5.1中使用Facades和helper方法之间是否存在性能差异.

我首先要删除,use View;或者View::make()尽可能地删除,认为这view()会更简单,也可能更快.但我不知道.

Redirect::to()- > redirect(),Redirect::back()- > back()等相同..

是否存在差异或无关紧要?

php performance laravel-5 laravel-facade

6
推荐指数
1
解决办法
1904
查看次数

Laravel Log useFiles 方法正在将 Log 写入多个文件

我在我的应用程序中使用Laravel Log Facade。我有几个服务,如 Mandrill、Twilio、Stripe 等,需要记录在单独的文件中。但是当我使用 Log::useFiles() 为服务包装类之一设置单独的文件时,如下所示:

Class Mailer
{
    static function init()
    {
        Log::useFiles(storage_path('logs/mandrill-'.date("Y-m-d").'.log'));
    }

    static function send()
    {
        // some code here...

        Log::error("Email not sent");
    }
}
Run Code Online (Sandbox Code Playgroud)

我最终将日志写入 Laravel 日志文件和 Mandrill 日志文件中。

有没有办法告诉Log只将日志写入一个文件?

它这样做通常很奇怪,因为当我直接使用Monolog时,它只写入一个文件,正如它应该的那样。据我所知 Log Facade 使用的是 Monolog。

php logging laravel monolog laravel-facade

6
推荐指数
1
解决办法
5897
查看次数

如何从 Laravel 中的 Facade 名称获取基础类名称

我发现理解 Facades 有点困难。特别是如何从外观名称中找到底层类名称/位置。我已经阅读了文档,但仍然不清楚。比如在使用的时候Auth::login() ,发现Auth Facade里面没有login()方法。

 class Auth extends Facade
{
/**
 * Get the registered name of the component.
 *
 * @return string
 */
protected static function getFacadeAccessor()
{
    return 'auth';
}

/**
 * Register the typical authentication routes for an application.
 *
 * @return void
 */
 public static function routes()
 {
    static::$app->make('router')->auth();
 }
}
Run Code Online (Sandbox Code Playgroud)

验证外墙getFacadeAccessor()方法返回一个字符串权威性。但是auth我应该看哪个班级?如何解析实际的类?

谢谢,

laravel laravel-facade

6
推荐指数
2
解决办法
2165
查看次数

用于 Laravel 实时外观的 VSCode 智能感知

在 Laravel 中使用实时门面时,VSCode 似乎不提供智能感知或自动完成。即使使用像 PHP Intelliphense 这样的流行插件,我也无法让它工作。但是,当我正常导入类时,它工作得很好。

例如,这没有智能感知/自动完成功能:

use Facades\App\User;
User::auth();
Run Code Online (Sandbox Code Playgroud)

但这确实:

use App\User;
User::auth();
Run Code Online (Sandbox Code Playgroud)

我觉得这一定是一个常见问题,因为 Facades 是 Laravel 的核心概念。有谁知道这个问题的解决方法或解决方案?

php laravel laravel-facade visual-studio-code

6
推荐指数
1
解决办法
993
查看次数

Laravel 7 致命错误:未捕获运行时异常:尚未设置外观根

我查看了针对类似问题提出的几个答案,但对我的案例没有任何作用。仅供参考,这是我在 Laravel 7 中的第一个项目,在我的 Mac 上运行良好。我已按照本文在我的服务器上部署了该项目。在网络上运行该项目时,出现以下错误:

致命错误:未捕获运行时异常:尚未设置外观根。在 /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:258

堆栈跟踪:#0 /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(425): Illuminate\Support\Facades\Facade::__callStatic('replaceNamespac.. .', 数组) #1 /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(402): Illuminate\Foundation\Exceptions\Handler->registerErrorViewPaths() # 2 /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(313): Illuminate\Foundation\Exceptions\Handler->renderHttpException(Object(Symfony\Component\HttpKernel\)异常\HttpException))#3 /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(210):照亮\Foundation\Exceptions\Handler->prepareResponse(对象( Illuminate\Http\Request), Object(Symfony\Component\HttpKernel\Exception\HttpExcepti in /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php 第 258 行

我该如何修复它?

deployment runtimeexception composer-php laravel-facade laravel-7

6
推荐指数
1
解决办法
3万
查看次数