2013-02-20 2 views
0

Я попробовал это, и это работает:Как получить доступ к защищенному объекту Joomla?

<?php 
define('_JEXEC', 1); 
define('DS', DIRECTORY_SEPARATOR); 
define('JPATH_BASE', dirname(__FILE__).DS."../apitest/"); 

require_once(JPATH_BASE . DS . 'includes' . DS . 'defines.php'); 
require_once(JPATH_BASE . DS . 'includes' . DS . 'framework.php'); 
require_once(JPATH_BASE . DS . 'libraries' . DS . 'joomla' . DS . 'factory.php'); 

$conn = JDatabase::getConnectors(); 

print_r($conn); 
?> 

Однако, когда я попытался это:

<?php 
define('_JEXEC', 1); 
define('DS', DIRECTORY_SEPARATOR); 
define('JPATH_BASE', dirname(__FILE__).DS."../apitest/"); 

require_once(JPATH_BASE . DS . 'includes' . DS . 'defines.php'); 
require_once(JPATH_BASE . DS . 'includes' . DS . 'framework.php'); 
require_once(JPATH_BASE . DS . 'libraries' . DS . 'joomla' . DS . 'factory.php'); 

$conn = JDatabase::$connection; 

print_r($conn); 
?> 

возвращает:

Fatal error: Cannot access protected property JDatabase::$connection in C:\xampp\htdocs\apitest1\index.php on line 10 

Как получить доступ к переменной $ соединения?

ответ

1

Попробуйте

define('_JEXEC', 1); 
define('JPATH_BASE', dirname(__FILE__));//this is when we are in the root 
define('DS', DIRECTORY_SEPARATOR); 

require_once (JPATH_BASE .DS.'includes'.DS.'defines.php'); 
require_once (JPATH_BASE .DS.'includes'.DS.'framework.php'); 

$mainframe =& JFactory::getApplication('site'); 
$mainframe->initialise(); 
$db = &JFactory::getDBO(); //Your database object is ready 
$sql = "SELECT * FROM #__users"; 
$db->setQuery($sql); 
$db->query(); 
$res = $db->loadAssocList(); 
print_r($res) 

Надеюсь, это может вам помочь.

0

Это защищено, поэтому вам необходимо использовать геттер для чтения и средство для записи в это свойство.

погуглить для API Joomla обнаружился это:

http://docs.joomla.org/API16:JDatabase/getConnection

Пример использования

$conn = $connectorInstance.getConnection(); 

Вы также можете захотеть взглянуть на this article

Смежные вопросы