我想在Laravel中编写自己的类,我可以在控制器中使用它。我正在用外墙尝试这个。
这是我的文件夹结构:
app
classes
facades
serviceproviders
我在composer.json
中自动加载了它们 "app/facades",
"app/classes",
"app/serviceproviders"
我的班级(app / classes / DateRange.php)
<?php namespace myMethods;
class DateRange {
public function doSomething()
{
echo 'Doing something!';
}
}
我的门面(app / facades / DateRangeFacade.php)
<?php namespace myMethods\Facades;
use Illuminate\Support\Facades\Facade;
class DateRangeFacade extends Facade {
protected static function getFacadeAccessor() { return 'DateRange'; }
}
我的Serviceprovider(app / serviceproviders / DateRangeServiceProvider.php)
<?php namespace myMethods;
use Illuminate\Support\ServiceProvider;
class DateRangeServiceProvider extends ServiceProvider {
public function register()
{
$this->app['DateRange'] = $this->app->share(function($app)
{
return new DateRange;
});
$this->app->booting(function()
{
$loader = AliasLoader::getInstance();
$loader->alias('DateRange', 'myMethods\Facades\DateRangeFacade');
});
}
}
还添加了&#39; myMethods \ DateRangeServiceProvider&#39;到app.php中的providers数组
打开网站,它会显示&#39; Class&#39; myMethods \ AliasLoader&#39;找不到&#39;。在stackoverflow上找到一个解决方案来放置一个&#39; \&#39;在AliasLoader ::之前,但这并没有帮助。
我做错了什么?提前谢谢。
答案 0 :(得分:1)
您必须使用或命名所有内容:
<?php namespace myMethods;
use Illuminate\Support\ServiceProvider;
use Illuminate\Foundation\AliasLoader;
class DateRangeServiceProvider extends ServiceProvider {
public function register()
{
$this->app['DateRange'] = $this->app->share(function($app)
{
return new DateRange;
});
$this->app->booting(function()
{
$loader = AliasLoader::getInstance();
$loader->alias('DateRange', 'myMethods\Facades\DateRangeFacade');
});
}
}
这是必需的(你不能简单地使用\ AliasLoader)因为AliasLoader不是Laravel中的Alias,它是一个类,所以你需要告诉PHP确切的位置。