2013-03-25 6 views
0

Мне нужно создать пользовательский массив конфигурации базы данных Joomla, так что я делаю это нравится:Как преобразовать объект в массив?

Но получаю сообщение об ошибке: Fatal error: Cannot use object of type JDatabaseMySQLi as array in /Sites/joomla/administrator/components/com_***** on line 217.

Я также попытался так:

die(var_dump($config->getValue('config.host'))); 
//string(9) "localhost" 

$temp_var = $config->getValue('config.host'); 
die(var_dump($temp_var)); 
//string(9) "localhost" 
+0

попробуйте использовать (strin g) $ config-> getValue ('config.host'); –

+0

@RohitKumarChoudhary уже пробовал - не повезло. – user1692333

+0

Вы можете печатать_r ($ config-> getValue ('config.host')); –

ответ

0

В Joomla 3.0

Вы можете получить каждое значение, как это:

$config = JFactory::getConfig(); 
$db['default']['hostname'] = $config->get('host'); 
// Show them 
var_dump($config); 
var_dump($config->get('host')); 
var_dump($db); 
0

Проблема в $ дб часть, а не $ конфигурации. Вы пытаетесь угрожать объекту $ db (вероятно, созданным JFactory::getDbo()) как массив.

Если это переменная, которую вы хотите использовать для чего-то, попробуйте переименовать ее во что-то еще, чтобы избежать конфликта с уже существующим объектом $ db.

Или использовать класс JDatabase, как описано здесь: http://docs.joomla.org/Accessing_the_database_using_JDatabase

0

Ваше сообщение об ошибке очень ясно - вы пытаетесь использовать и объект под названием $db класса JDatabaseMySQLi как массив. Если вы создали $db следующим образом:

$db = JFactory::getDBO(); 
// N.B. $db is already setup for the Joomla! database. 

у вас есть разъем базы данных object (используя MySQLi adpater) для Joomla! установка локальной базы данных (т. е. одна настройка в вашем configuration.php). Это не array - но ваша строка кода пытается использовать его в качестве array

$db['default']['hostname'] = $config->getValue('config.host'); 

Примечание: эта линия выше неправильно

Если вы хотите установить соединение с базой данных используя учетные данные, отличные от тех, которые хранятся в вашем configuration.php (скажем, в удаленной базе данных), вы можете использовать следующий подход:

$options = array(
    'host'  => 'remote_host', 
    'user'  => 'remote_user', 
    'password' => 'remote_password', 
    'database' => 'remote_name', 
    'prefix' => 'remote_table_prefix', 
); 

$rDBC = JDatabase::getInstance($options); 
Смежные вопросы