dsxrq28228 2013-12-21 16:02
浏览 70

外墙:没有找到aliasloader

I want to write my own classes in Laravel that I can use in my controllers. I'm trying this with facades.

This is my folder structure:

app
    classes
    facades
    serviceproviders

I autoloaded them in composer.json

    "app/facades",
    "app/classes",
    "app/serviceproviders"

My class (app/classes/DateRange.php)

<?php namespace myMethods;

class DateRange {
    public function doSomething()
    {
        echo 'Doing something!';
    }
}

My facade (app/facades/DateRangeFacade.php)

<?php namespace myMethods\Facades;
use Illuminate\Support\Facades\Facade;

class DateRangeFacade extends Facade {
    protected static function getFacadeAccessor() { return 'DateRange'; }
}

My 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');
        });
    }
}

Also added 'myMethods\DateRangeServiceProvider' to providers array in app.php

Opening the site, it displays 'Class 'myMethods\AliasLoader' not found'. Found a solution on stackoverflow to put a '\' before AliasLoader:: but that doesn't help.

What am I doing wrong ? Thanks in advance.

  • 写回答

1条回答 默认 最新

  • dptdb84606 2013-12-21 16:15
    关注

    You have to use or namespace all the things:

    <?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');
            });
        }
    }
    

    This is required (and you cannot simply use \AliasLoader) because AliasLoader is not an Alias in Laravel, it's a class, so you need to tell PHP exactly where it is.

    评论

报告相同问题?

悬赏问题

  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因