PEAR Manual
Prev |  | Next

# DB_DataObject::factory()

DB_DataObject::factory() -- Autoload and instantate class based on table name.

## Synopsis

``mixed DB_DataObject::factory` ([string $table])`

## Description

This is the recommended way to autoload a class, and instantate it. The class is loaded based on the configuration settings (class_location and class_prefix) for table to class naming.

## Parameter

- `string $table` - the table you want to load ([From Version 1.7.2] if blank, and called on an an instance of a dataobject, it will create a new instance of that object)

## Return value

`object mixed` - `FALSE` or the object

## Throws

Table 33-1. Possible PEAR_Error values

Error code | Error message | Meaning | Solution
--- | --- | --- | ---
DB_DATAOBJECT_ERROR_NOCLASS | "could not autoload $class" |  |

## Note

This method can be called statically or dynamically.

## Example

Example 33-1. Simple fetch of data based on Primary Key
    // set up our options
    $opts = &PEAR::getStaticProperty('DB_DataObject','options');
    $opts = array(
        'class_location'  => '/home/me/Projects/myapplication/DataObjects',
        'class_prefix'    => 'DataObjects_'
    );

    // loads the file: /home/me/Projects/myapplication/DataObjects/Person.php
    // and checks that the class DataObjects_Person exists, and returns an
    // instance of it.

    $person = DB_DataObject::factory('person');

    if ($person->get(12)) {
      print_r($person);
    } else {
      echo "NO person 12 exists";
    }

    // it can also be used in a dynamically
    class DataObjects_MyTable {

        function anExample() {
            $person = $this->factory('person');

            // supported in version 1.7.2
            $another_mytable = $this->factory();

            $another_person = $person->factory();

        }
    }

Prev | Home | Next
Auto Building and Database Schema | Up | ->get()