不能在我的Facade类 - Laravel 4中使用DB :: table表达式

时间:2014-05-23 14:27:50

标签: php laravel laravel-4 composer-php facade

不能在我的班级中使用DB :: table。我得到一个handleShutdown。 请有人告诉我原因。 我花了好几个小时,我可能会发疯。

按照以下代码:

应用程序/ ACL / Acl.php

namespace AccessControl;

class Acl 
{

    public function hasPermission($group_id, $module_name, $permission_type) {

      $result = DB::table('permission')->get();
      return $result;
    }
}

应用程序/ ACL / AclFacade.php

namespace AccessControl\Facades;

use Illuminate\Support\Facades\Facade;

class Acl extends Facade {

    protected static function getFacadeAccessor() { return 'acl'; }

}

应用程序/ ACL / AclServiceProvider

namespace AccessControl;

use Illuminate\Support\ServiceProvider;
use Illuminate\Foundation\AliasLoader;


class AclServiceProvider extends ServiceProvider {

    public function register()
    {
        // Register 'acl' instance container to our acl object
        $this->app['acl'] = $this->app->share(function($app)
        {
            return new Acl;
        });

        // Shortcut so developers don't need to add an Alias in app/config/app.php
        $this->app->booting(function()
        {
            $loader = AliasLoader::getInstance();
            $loader->alias('Acl', 'AccessControl\Facades\Acl');
        });
    }
}

app.php

  

'providers'=>阵列(

     

'照亮\基金会\提供商\ ArtisanServiceProvider',     '照亮\身份验证\ AuthServiceProvider',     'AccessControl的\ AclServiceProvider',

composer.js

      "psr-0": {
          "App\\": "app/",
          "App\\Acl\\": "app/acl",

[...]
      "classmap": [
          "app/commands",
          "app/acl",
[...]

我使用了命令

  

Composer Dump。

1 个答案:

答案 0 :(得分:1)

你必须告诉PHP它在根命名空间中:

$result = \DB::table('permission')->get();

或者在.php文件的顶部使用它:

use DB;