如何使用动态输入在服务器上创建PHP文件

问题描述:

我正在使用Laravel并使用数据库连接创建了多租户应用程序,现在我需要能够自动创建database.php的内容选择输入。如何使用动态输入在服务器上创建PHP文件

样品database.php中的:

'connections' => [ 

    'db1' => [ 
     'driver' => 'mysql', 
     'host'  => env('DB_HOST', 'localhost'), 
     'database' => 'db1', 
     'username' => env('DB_USERNAME', 'forge'), 
     'password' => env('DB_PASSWORD', ''), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
    ], 

    'db2' => [ 
     'driver' => 'mysql', 
     'host'  => env('DB_HOST', 'localhost'), 
     'database' => 'db2', 
     'username' => env('DB_USERNAME', 'forge'), 
     'password' => env('DB_PASSWORD', ''), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
     'strict' => false, 
    ] 
] 

所以基本上我将有一个形式,将问这样的数据库名,连接名,密码等这些必填字段我的问题是,我没有一个固定的连接数量可能是一个,两个,四个,w/e和file_put_contents()需要一个字符串而不是数据数组。所以我的问题是如何创建这个database.php文件与我的表单输入,创建开幕和闭幕括号和一切需要?是否有一个函数可以将数组转换为保留括号和运算符的字符串?

我该如何做到这一点?

+0

不要这样做。请。是的,与阅读从数据解析结构相比,它是一种有效的解决方案,但自我修改代码本质上是非常**非常危险的。 – symcbean

+0

嗨,它可以安全地做到这一点,这将是一个私人管理员应用程序,将创建和监视另一个无关的应用程序的实例。 –

如果你想在这条路上走下去,确保你有一个模板文件,你可以设置你简单替换的占位符。

您的示例模板文件将包含您需要的每个信息的所有要求+占位符。

'db{index}' => [ 
      ...other key+values and it's placeholders... 
     ], 

,简单地可以循环和CONCAT为您的最终database.php文件多次此块。


另一方面,你可以在飞行中做这个,一些片段来指导你。

$nameKey = 'NameOfConnection'; 

$dataSync = AtlasBases::find($id_client); 

Config::set('database.connections.' . $nameKey, array(
     'driver' => 'mysql', 
     'host'  => $dataSync->site_db_server, 
     'database' => $dataSync->site_db_base, 
     'username' => $dataSync->site_db_user, 
     'password' => $dataSync->site_db_password, 
      'charset' => 'utf8', 
     'collation' => 'utf8_general_ci', 
     'prefix' => '', 
)); 
# And set the new connection to my models 

$imobModel = new ImobImoveis; 
$imobModel->setConnection($nameKey); 
+0

对不起,由于我实现代码的方式,它不适用于我的应用程序,最直接的方法是创建可以正常工作的文件,但我不想继续手动创建它,可以提供扩展示例的模板方式和循环,也许提供一个链接? –