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

时间:2015-01-08 15:18:21

标签: php laravel

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

更新:当然我试过“使用App;” (d`oh)当然它不起作用。当然,它现在有效。

3 个答案:

答案 0 :(得分:7)

您还可以使用返回应用程序实例的app()帮助程序函数。并$config = app('config');获取配置对象。

答案 1 :(得分:5)

您位于名称空间libraries\data中。您可以添加use App;,也可以使用\App::调用App方法。

答案 2 :(得分:1)

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

如果你想使用laravel App类,你需要写这个:

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

或者在文件顶部添加use App;,就像使用数据库类一样。