Php 拉雷维尔4号的立面问题

Php 拉雷维尔4号的立面问题,php,laravel,package,Php,Laravel,Package,对不起,我用的是谷歌翻译。 首先,我留下我的代码: FtpServiceProdiver.php <?php namespace Jaimemse\Ftp; use Illuminate\Support\ServiceProvider; class FtpServiceProvider extends ServiceProvider { protected $defer = false; public function boot() { $this->package(

对不起,我用的是谷歌翻译。 首先,我留下我的代码:

FtpServiceProdiver.php

<?php namespace Jaimemse\Ftp;

use Illuminate\Support\ServiceProvider;

class FtpServiceProvider extends ServiceProvider {

protected $defer = false;

public function boot()
{
    $this->package('jaimemse/ftp');
}

public function register()
{
    $this->app->bind('ftp', function()
    {
        return new Ftp;
    });
}

public function provides()
{
    return array();
}
}
如果不是正面,而是这样,如果它起作用:

'Ftp' => 'Jaimemse\Ftp\Ftp',
我遇到的问题是,在使用文件app.php中的别名时,会在Facades/Ftp.php文件夹中查找Ftp类

调用未定义的方法jaimese\Ftp\Facades\Ftp::hello()


有人能帮我吗?谢谢

您必须扩展BaseController:

<?php namespace Jaimemse\Ftp;

class Ftp extends \BaseController {

    public function hello()
    {
        return 'hola';
    }
}

应该是

use \Illuminate\Support\Facades\Facade;
use \Illuminate\Support\ServiceProvider;

你应该把app.php放进去

“提供者”数组中的“jaimese\Ftp\FtpServiceProvider”(在“别名”之前)

和在“别名”数组中


‘Ftp’=>‘jaimese\Ftp\Facades\Ftp’,

我通过添加寄存器方法修复了它:

FtpServiceProvider.php

public function register()
{
    $this->app->bind('ftp', function()
    {
         return new Ftp;
    });

    $this->app->booting(function() 
    { 
        $loader = \Illuminate\Foundation\AliasLoader::getInstance(); 
        $loader->alias('Ftp', 'Jaimemse\Ftp\Ftp'); 
    }); 
}
Ftp.php

App.php

'Jaimemse\Ftp\FtpServiceProvider',
我没有在文件中添加任何app.php别名。我删除了Facade文件

现在我可以做以下事情:

Ftp::hello();

希望这能帮助别人。谢谢大家!

您好,首先感谢您的回复。问题是我创建了一个类,因此该类不扩展任何驱动程序,而是包含该包的单个类。所有这些都在:workbench/jaimese/ftp/src/jaimese/ftp内谢谢
use Illuminate\Support\Facades\Facade;
use Illuminate\Support\ServiceProvider;
use \Illuminate\Support\Facades\Facade;
use \Illuminate\Support\ServiceProvider;
public function register()
{
    $this->app->bind('ftp', function()
    {
         return new Ftp;
    });

    $this->app->booting(function() 
    { 
        $loader = \Illuminate\Foundation\AliasLoader::getInstance(); 
        $loader->alias('Ftp', 'Jaimemse\Ftp\Ftp'); 
    }); 
}
class Ftp {

    public function hello()
    {
        return 'hello';
    }

}
'Jaimemse\Ftp\FtpServiceProvider',
Ftp::hello();