Поскольку вы написали функцию с именем foo
и знаете, что она находится в myfile.js
, почему вам нужно динамически получать эту информацию?
Сказав, что вы можете использовать arguments.callee.toString()
внутри function (это строковое представление всей функции) и выведите значение имени функции.
Вот функция, которая выплюнет свое имя:
function foo() {
re = /^function\s+([^(]+)/
alert(re.exec(arguments.callee.toString())[1]);
}
Может быть установлен в вашей регистрационной функции AppServiceProvider.php
:
public function register()
{
$db = 2104018; // calculate the name
config(['database.connections.mysql' => [
'driver' => 'mysql',
'host' => config('database.connections.mysql.host'),
'database' => $db,
'username' => config('database.connections.mysql.username'),
'password' => config('database.connections.mysql.password'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
]]);
}
Или другим способом было бы создать вспомогательную функцию в app/helpers.php
, добавить ее к вашему composer.json
в "autoload": { "files": ["app/helpers.php"] }
и вызовите его из файла конфигурации database.php
:
// app/helpers.php
if (!function_exists('calculate_db_name')) {
function calculate_db_name() {
$db = 12345; // do the thing...
return $db;
}
}
// config/database.php
'mysql' => [
...
'database' => calculate_db_name()
...
]
env()
в базе кода вместо доступа кconfig()
, особенно при кешировании ваших файлов конфигурации для использования в производстве? – Oluwatobi Samuel Omisakin 13 July 2018 в 07:39env()
не в файлах конфигурации возвращают значение null после запускаphp artisan cache:config
. Все файлы конфигурации скомпилированы в одну для быстрой загрузки. Полное раскрытие, я скопировал это в файлconfig/database.php
, не задумываясь дважды, я соответствующим образом обновлю ответ. Спасибо что подметил это. – DigitalDrifter 13 July 2018 в 07:54