外墙:没有找到aliasloader

时间:2013-12-21 16:02:10

标签: php laravel composer-php

我想在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 ::之前,但这并没有帮助。

我做错了什么?提前谢谢。

1 个答案:

答案 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确切的位置。