Ответ 1
$fields = get_class_vars('DATABASE_CONFIG')
echo $fields['db1']['login'];
Мне нужно получить значения из конфигурационного файла CakePHP database.php с одного из моих контроллеров.
Я поддерживаю код ex-employee, поэтому я не уверен, насколько он придерживается структур по умолчанию. Я надеюсь, что это довольно просто, но я не могу представить Google правильную информацию.
Файл: app/config/database.php
class DATABASE_CONFIG
{
var $db1 =
array('driver' => 'mysqli',
'connect' => 'mysql_connect',
'host' => 'localhost',
'login' => 'username',
'password' => 'password',
'database' => 'schema',
'prefix' => '');
}
Файл: приложение/контроллеры/my_controller.php
// here is where I need to retrieve
// the database login and password values
Какой синтаксис я могу использовать здесь? Возможно ли даже получить эти значения или они доступны только для кишок рамки CakePHP?
$fields = get_class_vars('DATABASE_CONFIG')
echo $fields['db1']['login'];
Ну, я должен сказать, что вышеупомянутый ответ - гораздо более быстрый и простой метод, чем то, что я использовал, но просто для аргумента:
App::Import('ConnectionManager');
$ds = ConnectionManager::getDataSource('default');
$dsc = $ds->config;
echo $dsc['host'];
echo $dsc['login'];
echo $dsc['password'];
echo $dsc['database'];
Я думаю, что если что-то это защитит ваш код от изменения имени класса DATABASE_CONFIG.
Я знаю, что это старый пост, но я только узнал, что есть способ перечислить все элементы класса DATABASE_CONFIG без использования функции get_class_vars()
.
Я думаю, что get_class_vars()
работает в общедоступных классах.
http://api.cakephp.org/2.4/class-ConnectionManager.html#_enumConnectionObjects
App::uses('ConnectionManager', 'Model');
$dataSource = ConnectionManager::enumConnectionObjects();
Должен перечислить все, на самом деле его вывод идентичен ответу @RaYell.
$ds = ConnectionManager::getDataSource('default')->config;
echo $ds['login'];
Но из CakePHP 2.1 и выше данное решение не будет работать, так как есть некоторые большие изменения от Cake версии 2.x. Для Cake 2.1 и выше следующий способ должен работать, когда я тестировал.
App::uses('ConnectionManager', 'Model');
$ds = ConnectionManager::getDataSource('default');
$user = $ds->config['login'];
Другие варианты вы можете найти по следующей ссылке:
Как просмотреть настройки конфигурации базы данных из оболочки Cake?