Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel ServiceContainer和Facade(初学者)_Php_Laravel_Inversion Of Control - Fatal编程技术网

Php Laravel ServiceContainer和Facade(初学者)

Php Laravel ServiceContainer和Facade(初学者),php,laravel,inversion-of-control,Php,Laravel,Inversion Of Control,第一次使用国际奥委会和外墙。我想做一个“队长”的门面,这样我就可以打电话给他了 Teamleader::getCompaniesByCountry(); 我得到了错误 非静态方法Notflip\Teamleader\Teamleader::getCompaniesByCountry()不应静态调用,假设$this来自不兼容的上下文 这是我的服务提供商 <?php namespace Notflip\Teamleader; use Illuminate\Support\ServiceP

第一次使用国际奥委会和外墙。我想做一个“队长”的门面,这样我就可以打电话给他了

Teamleader::getCompaniesByCountry(); 
我得到了错误

非静态方法Notflip\Teamleader\Teamleader::getCompaniesByCountry()不应静态调用,假设$this来自不兼容的上下文

这是我的服务提供商

<?php namespace Notflip\Teamleader;

use Illuminate\Support\ServiceProvider;

class TeamleaderServiceProvider extends ServiceProvider {


    public function register()
    {
        $this->app['teamleader'] = $this->app->bind('teamleader', function($app){
            return new Teamleader();
        });
    }

    public function boot()
    {
        //
    }
}

您需要调用facade上的方法,而不是实际的类。因此,如果您的类是
Notflip\Teamleader\Teamleader
,而您的facade是
Notflip\Teamleader\Facades\Teamleader
,那么您基本上需要调用
Notflip\Teamleader\Facades\Teamleader::getCompaniesByCountry()

显然你不想那样做。因此,您在
config/app.php
文件中添加了一个别名。在“别名”数组下,可以添加:

'TeamLeader' => 'Notflip\Teamleader\Facades\Teamleader'
然后您可以直接调用
\Teamleader::getCompaniesByCountry()

此外,您可能需要将您的服务提供商更改为:

$this->app->bind('teamleader', function($app){
    return new Teamleader();
});
与此相反:

$this->app['teamleader'] = $this->app->bind('teamleader', function($app){
    return new Teamleader();
});

非常感谢你!很好的书面回答和解决!
$this->app['teamleader'] = $this->app->bind('teamleader', function($app){
    return new Teamleader();
});