【问题标题】:How to call non-static method using laravel alias如何使用 laravel 别名调用非静态方法
【发布时间】:2020-12-26 00:07:45
【问题描述】:

我有一个自定义帮助程序类,并为该类设置了别名以访问刀片文件(前端)。我可以访问引用 alias::method 的静态方法,但我需要从视图中访问非静态方法。我该怎么做?

'Access' => App\Services\Access::class,
Two functions in Access class.
public function getPermissions()
public static function getUser()

我可以使用Access::getUser() 轻松访问静态函数 那么如何访问非静态函数呢?

【问题讨论】:

  • 你需要一个类的实例才能调用非静态方法......也许你想要这个类的 Facade 或者让魔术 __callStatic 方法创建一个新实例并为你调用它的方法
  • @lagbox 谢谢。这才是重点。可以分享一些代码或网址吗?
  • 您能提供您尝试使用它的代码吗?
  • 我需要从视图中调用 getPermissions() 函数。通过访问别名。
  • 但在下面您说您需要在自定义刀片指令中使用它......它是什么?

标签: php laravel laravel-5 laravel-blade


【解决方案1】:

如果你只想在你的视图中访问它,你可以将一个新的 Access 实例共享给你的所有视图:

在 AppServiceProvider 的 boot() 方法中:

View::share('access', (new App\Services\Access));

然后在你的刀片中@foreach($access->getPermissions() as $permission)

【讨论】:

  • 没有。我不需要使用视图共享,因为我想访问自定义刀片指令中的非静态方法。
【解决方案2】:

您可以将此类的实例注入到您的视图中:

@inject('access', Access::class)

现在您可以通过$access->whatEverMethod() 访问所有这些方法。否则,您将需要 Facade 或处理魔术方法来调用类本身的非静态方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 2016-05-13
    • 2013-03-20
    • 2011-11-05
    • 1970-01-01
    • 2019-12-02
    相关资源
    最近更新 更多