如何使用动态输入在服务器上创建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文件与我的表单输入,创建开幕和闭幕括号和一切需要?是否有一个函数可以将数组转换为保留括号和运算符的字符串?
我该如何做到这一点?
答
如果你想在这条路上走下去,确保你有一个模板文件,你可以设置你简单替换的占位符。
您的示例模板文件将包含您需要的每个信息的所有要求+占位符。
'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
对不起,由于我实现代码的方式,它不适用于我的应用程序,最直接的方法是创建可以正常工作的文件,但我不想继续手动创建它,可以提供扩展示例的模板方式和循环,也许提供一个链接? –
不要这样做。请。是的,与阅读从数据解析结构相比,它是一种有效的解决方案,但自我修改代码本质上是非常**非常危险的。 – symcbean
嗨,它可以安全地做到这一点,这将是一个私人管理员应用程序,将创建和监视另一个无关的应用程序的实例。 –