【问题标题】:Laravel 4.1 Facade Non-static method should not be called staticallyLaravel 4.1 Facade 非静态方法不应该被静态调用
【发布时间】:2015-05-28 00:15:18
【问题描述】:

我正在尝试在 laravel 4.1 中创建一个外观。我创建了门面、服务提供者和类,但无济于事。我关注了许多“如何做”,包括 Laracasts 上自定义外观的高级视频。不管我尝试多少次,我最终都得到了Non-static method Custom\Helpers\Helper::doSomething() should not be called statically的例外

这是我的代码...

HelpersServiceProvider.php

<?php namespace Custom\Helpers;

use Illuminate\Support\ServiceProvider;

class HelpersServiceProvider extends ServiceProvider {

    public function register()
    {
        $this->app->bind('trial','Custom\Helpers\Helper');
    }

}

HelpersFacade.php

<?php namespace Custom\Facades;

use Illuminate\Support\Facades\Facade;


class Helper extends Facade {

    protected static function getFacadeAccessor()
    {
        return 'trial';
    }

}

Helpers.php

<?php namespace Custom\Helpers;
class Helper {
     public function doSomething()
     {
        return 'Hello';
     }
}

我将服务提供者添加到我的 app.php 文件并注册外观别名

'Custom\Helpers\HelpersServiceProvider',

'Helper'         => 'Custom\Facades\Helper',

然后,当我尝试通过静态调用(是的,我知道它不是真正静态的)或直接通过服务提供商访问它时,我得到了异常错误。

在这个问题上摸不着头脑......

【问题讨论】:

  • 我假设你跑了 dump-autoload 之类的?
  • 你的假设是正确的 ;-)

标签: php laravel-4


【解决方案1】:

看起来您的类(或文件)名称不正确:

HelpersFacade.php

class Helper extends Facade {

此外,您的Helper 课程在Helpers.php 中。那些也需要匹配。

【讨论】:

  • 我将这两个文件重命名为 Helper.php,运行 composer,但我仍然收到非静态方法 Custom\Helpers\Helper::doSomething() 不应被静态调用
  • 如果你在类外的外观文件中放置一个 die 语句,它会被命中吗?
  • 另外,请务必在更改文件名后重新转储自动加载
  • 你好观察者,我总是转储:) 也就是说,我确实将 die 添加到 Helper.php 外观文件中,但它没有被命中,而是得到了静态异常。
  • 你应该修复类名,然后尝试我以前的答案。
猜你喜欢
  • 2019-12-02
  • 2013-11-10
  • 1970-01-01
  • 2023-02-22
  • 2015-07-03
  • 1970-01-01
  • 2014-09-08
  • 2018-10-10
  • 1970-01-01
相关资源
最近更新 更多