对不起英语,但我正在使用谷歌翻译。 首先,我留下我的代码:
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.php(班级)
<?php namespace Jaimemse\Ftp;
class Ftp {
public function hello()
{
return 'hola';
}
}
Facades / Ftp.php(Facade)
<?php namespace Jaimemse\Ftp\Facades;
use Illuminate\Support\Facades\Facade;
class Ftp extends Facade {
protected static function getFacadeAccessor() { return 'ftp'; }
}
app.php
'Jaimemse\Ftp\FtpServiceProvider',
'Ftp' => 'Jaimemse\Ftp\Facades\Ftp',
如果不是那个Facade那么,如果它起作用:
'Ftp' => 'Jaimemse\Ftp\Ftp',
我遇到的问题是,在app.php文件中使用别名时,在Facades / Ftp.php文件夹中寻找Ftp类
调用未定义的方法Jaimemse \ Ftp \ Facades \ Ftp :: hello()
有人可以帮帮我吗?谢谢!答案 0 :(得分:0)
你必须扩展BaseController:
<?php namespace Jaimemse\Ftp;
class Ftp extends \BaseController {
public function hello()
{
return 'hola';
}
}
您的路线也应该是(namespace
):
Route::get('/ftp', 'Jaimemse\Ftp\Ftp@hello');
另外
use Illuminate\Support\Facades\Facade;
use Illuminate\Support\ServiceProvider;
应该是
use \Illuminate\Support\Facades\Facade;
use \Illuminate\Support\ServiceProvider;
答案 1 :(得分:0)
你应该放入app.php
''提供者'数组中的'Jaimemse \ Ftp \ FtpServiceProvider'('别名'之前)和'aliases'数组
'Ftp'=&gt; 'Jaimemse \的Ftp \外墙\的Ftp',
答案 2 :(得分:0)
我通过添加注册方法修复它:
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
class Ftp {
public function hello()
{
return 'hello';
}
}
App.php
'Jaimemse\Ftp\FtpServiceProvider',
我没有在文件中添加任何app.php别名。我删除了Facade文件。
现在我可以做以下事情:
Ftp::hello();
希望有人帮助。谢谢!