Php Laravel Facade类未加载根类,而是返回未找到的方法

Php Laravel Facade类未加载根类,而是返回未找到的方法,php,laravel,facade,Php,Laravel,Facade,我试图让我的Facade类工作,但是看起来Laravel是在我的Facade类上调用该方法,而不是在我的根类上调用它。所以我得到了方法未定义的错误。当我直接从绑定(App::make('feed')->addArticle();)创建提要类时,它可以工作。所以我觉得我的外表有点不对劲。有什么想法吗?先谢谢你 控制器 class RssController extends BaseController { public function getArticles() {

我试图让我的Facade类工作,但是看起来Laravel是在我的Facade类上调用该方法,而不是在我的根类上调用它。所以我得到了方法未定义的错误。当我直接从绑定(App::make('feed')->addArticle();)创建提要类时,它可以工作。所以我觉得我的外表有点不对劲。有什么想法吗?先谢谢你

控制器

class RssController extends BaseController 
{

    public function getArticles() {
         Feed::addArticle();
    }
}
服务提供者

use Illuminate\Support\ServiceProvider;



class FeedServiceProvider extends ServiceProvider  {    
    public function register()
    {
        $this->app->bind('feed', function()
        {
            return new Feed;
        });
    }
}
门面类

use Illuminate\Support\Facades\Facade;

class FeedFacade extends Facade {

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

}
根类

class Feed {

//vars


    public function __construct()
    {

    }

    public function make() {
        return new Feed();
    }

    public function addArticle() {
        return '@addArticle';

    }

问题似乎是您希望您的Laravel Facade(
Feed::
)和服务提供商的实现类(
class Feed
)具有相同的名称。Facades可以工作,因为在
app/config/app.php
中有一个别名部分

'aliases' => array(
    'App'             => 'Illuminate\Support\Facades\App',
    'Artisan'         => 'Illuminate\Support\Facades\Artisan',
    'Auth'            => 'Illuminate\Support\Facades\Auth',
    'Blade'           => 'Illuminate\Support\Facades\Blade',
这个别名意味着无论何时使用,比如说,
App
facade

`App::someMethod`
Laravel实际上调用了
illighted\Support\Facades\App
上的
getFacadeAccessor
。系统中没有全局类
App
。如果有,它将导致类似的问题与外观

在系统中获取
Feed
=>
illumb\Support\Facades\Facade\FeedFacade
的别名,并将实现类
Feed
移出全局命名空间(将文件移动到适当的位置)

你应该准备好了

另外,冒着让您困惑的风险,您不需要将自己的类放在
illumb\Etc\…
名称空间中,您可能应该将它们放在自己的名称空间中,除非您试图让核心Laravel团队接受您的类作为官方提要服务

<?php
namespace My\Namespace;
class Feed
{
}
return new \My\Namespace\Feed;