API15

JTable/getInstance

From Joomla! Documentation

< API15:JTable
Revision as of 17:16, 22 March 2010 by Doxiki (talk | contribs) (New page: ===Description=== Returns a reference to the a Table object, always creating it <span class="editsection" style="font-size:76%;"> <nowiki>[</nowiki>[[Description:JTable/getInstance|Ed...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

[Edit Descripton]

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]