Php 不应静态调用Laravel 4.1 Facade非静态方法
我试图在Laravel4.1中创建一个外观。我已经创建了facade、服务提供者和类,但没有任何效果。我看了很多“如何做”,包括Laracasts定制外观的高级视频。无论我尝试了多少次,最终都会遇到一个例外:不应静态调用Php 不应静态调用Laravel 4.1 Facade非静态方法,php,laravel-4,Php,Laravel 4,我试图在Laravel4.1中创建一个外观。我已经创建了facade、服务提供者和类,但没有任何效果。我看了很多“如何做”,包括Laracasts定制外观的高级视频。无论我尝试了多少次,最终都会遇到一个例外:不应静态调用非静态方法Custom\Helpers\Helper::doSomething() 这是我的密码 HelpersServiceProvider.php <?php namespace Custom\Helpers; use Illuminate\Support\Servi
非静态方法Custom\Helpers\Helper::doSomething()
这是我的密码
HelpersServiceProvider.php
<?php namespace Custom\Helpers;
use Illuminate\Support\ServiceProvider;
class HelpersServiceProvider extends ServiceProvider {
public function register()
{
$this->app->bind('trial','Custom\Helpers\Helper');
}
}
<?php namespace Custom\Facades;
use Illuminate\Support\Facades\Facade;
class Helper extends Facade {
protected static function getFacadeAccessor()
{
return 'trial';
}
}
<?php namespace Custom\Helpers;
class Helper {
public function doSomething()
{
return 'Hello';
}
}
然后,当我试图通过静态调用(是的,我知道它不是真正的静态)或直接通过服务提供商访问它时,我会得到异常错误
这件事让我摸不着头脑…看起来您的类(或文件)名称不正确:
HelpersFacade.php
此外,您的Helper
类位于Helpers.php
中。这些也需要匹配。我假设您运行了dump autoload
等等?您的假设是正确的;-)我将这两个文件重命名为Helper.php,运行了composer,我仍然收到非静态方法Custom\Helpers\Helper::doSomething()不应被静态调用。如果在类外的facade文件中放置了一个die语句,它会被命中吗?另外,请确保在更改文件名后重新转储自动加载hi watcher,我始终转储:)也就是说,我确实在Helper.php facade文件中添加了die,但没有命中,而是得到了静态异常。您应该修复类名,然后尝试我前面的答案。
'Custom\Helpers\HelpersServiceProvider',
'Helper' => 'Custom\Facades\Helper',
class Helper extends Facade {