JTable/getInstance
From Joomla! Documentation
< API15:JTable
The "API15" namespace is an archived namespace. This page contains information for a Joomla! version which is no longer supported. It exists only as a historical reference, it will not be improved and its content may be incomplete and/or contain broken links.
Description[edit]
Returns a reference to the a Table object, always creating it
Template:Description:JTable/getInstance
Syntax[edit]
& getInstance($type, $prefix= 'JTable', $config=array())
Parameter Name | Default Value | Description |
---|---|---|
$type | $type The table type to instantiate | |
$prefix | $prefix A prefix for the table class name. Optional. | |
$config | array() | $options Configuration array for model. Optional. |
Returns[edit]
database A database object
Defined in[edit]
libraries/joomla/database/table.php
Importing[edit]
jimport( 'joomla.database.table' );
Source Body[edit]
function &getInstance( $type, $prefix = 'JTable', $config = array() )
{
$false = false;
$type = preg_replace('/[^A-Z0-9_\.-]/i', '', $type);
$tableClass = $prefix.ucfirst($type);
if (!class_exists( $tableClass ))
{
jimport('joomla.filesystem.path');
if($path = JPath::find(JTable::addIncludePath(), strtolower($type).'.php'))
{
require_once $path;
if (!class_exists( $tableClass ))
{
JError::raiseWarning( 0, 'Table class ' . $tableClass . ' not found in file.' );
return $false;
}
}
else
{
JError::raiseWarning( 0, 'Table ' . $type . ' not supported. File not found.' );
return $false;
}
}
//Make sure we are returning a DBO object
if (array_key_exists('dbo', $config)) {
$db =& $config['dbo'];
} else {
$db = & JFactory::getDBO();
}
$instance = new $tableClass($db);
//$instance->setDBO($db);
return $instance;
}
[Edit See Also] Template:SeeAlso:JTable/getInstance
Examples[edit]
<CodeExamplesForm />
Description
Static method to get an instance of a JTable class if it can be found in the table include paths. To add include paths for searching for JTable classes JTable::addIncludePath().
Syntax[edit]
static getInstance($type, $prefix= 'JTable', $config=array())
Parameter Name | Default Value | Description |
---|---|---|
$type | The type (name) of the class to get an instance of. | |
$prefix | An optional prefix for the table class name. | |
$config | array() | An optional array of configuration values for the object. |
Returns[edit]
mixed A object if found or boolean false if one could not be found.
Defined in[edit]
libraries/joomla/database/table.php
Importing[edit]
jimport( 'joomla.database.table' );
Source Body[edit]
public static function getInstance($type, $prefix = 'JTable', $config = array())
{
// Sanitize and prepare the table class name.
$type = preg_replace('/[^A-Z0-9_\.-]/i', '', $type);
$tableClass = $prefix.ucfirst($type);
// Only try to load the class if it doesn't already exist.
if (!class_exists($tableClass)) {
// Search for the class file in the JTable include paths.
jimport('joomla.filesystem.path');
if ($path = JPath::find(JTable::addIncludePath(), strtolower($type).'.php')) {
// Import the class file.
require_once $path;
// If we were unable to load the proper class, raise a warning and return false.
if (!class_exists($tableClass)) {
JError::raiseWarning(0, 'Table class ' . $tableClass . ' not found in file.');
return false;
}
} else {
// If we were unable to find the class file in the JTable include paths, raise a warning and return false.
JError::raiseWarning(0, 'Table ' . $type . ' not supported. File not found.');
return false;
}
}
// If a database object was passed in the configuration array use it, otherwise get the global one from JFactory.
if (array_key_exists('dbo', $config)) {
$db = &$config['dbo'];
} else {
$db = & JFactory::getDbo();
}
// Instantiate a new table class and return it.
return new $tableClass($db);
}
Examples[edit]
Code Examples[edit]