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


Laravel - how do you access App object in a custom class?

我在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() 帮助程序函数。$config = app('config');获取配置对象。

您在命名空间libraries'data 中。要么添加use App;,要么使用 'App:: 调用 App 方法。

由于您定义了自定义命名空间库''数据,应用程序将尝试在库''数据命名空间中查找 App 类。

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

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

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