Laravel - 如何在自定义类中访问App对象?

8
我有一个自定义类在app/libraries/data/Data.php中,我想返回到数据库的连接。
问题是,我需要动态加载一个在配置文件中不存在(也不能存在)的数据库。
我找到了一个好的解决方案,说实话这正是我所希望的,但似乎我无法从那里访问App对象。
<?php
namespace libraries\data;
use DB;

class Data 
{

    public function db($name, $firma = false)
    {

        if ($name == 'firma') {

            $config = App::make('config');
            $connections = $config->get('database.connections');

            $newConnection = $connections[$config->get('database.firma_%s')];

            $name = sprintf('firma_%s', $firma);
            $newConnection['database'] = $name;

            App::make('config')->set('database.connections.'.$name, $newConnection);
        }

        return DB::connection($name);
    }
}
?>

更新:当然,我尝试过“use App;”(天啊),当然它没有起作用。现在当然可以用了。
3个回答

10

你也可以使用 app() 辅助函数,该函数返回应用程序实例。而 $config = app('config'); 则可获取配置对象。


5

您现在位于命名空间libraries\data。您可以添加use App;或者使用\App::来调用App方法。


1

由于您定义了自定义命名空间 libraries\data,应用程序将尝试在 libraries\data 命名空间中查找 App 类。

如果您想使用 Laravel 的 App 类,则需要编写以下内容:

 $config = \App::make('config');

或者像你在使用DB类时那样,在文件顶部添加use App;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接