Creole Class Reference

This is the class that manages the database drivers. More...

List of all members.

Static Public Member Functions

Public Attributes

Detailed Description

This is the class that manages the database drivers.

There are a number of default drivers (at the time of writing this comment: MySQL, MSSQL, SQLite, PgSQL, Oracle) that are "shipped" with Creole. You may wish to either add a new driver or swap out one of the existing drivers for your own custom driver. To do this you simply need to register your driver using the registerDriver() method.

Note that you register your Connection class because the Connection class is responsible for calling the other driver classes (e.g. ResultSet, PreparedStatement, etc.).

Author Hans Lellelid <>

Member Function Documentation

void Creole::registerDriver ( string $phptype, string $dotpath ) [static]


Register your own RDBMS driver class.

You can use this to specify your own class that replaces a default driver or adds support for a new driver. Register your own class by specifying the 'phptype' (e.g. mysql) and a dot-path notation to where your Connection class is relative to any location on the include path. You can also specify '*' as the phptype if you want to register a driver that will handle any native type (e.g. if creating a set of decorator classes that log SQL before calling native driver methods). YOU CAN ONLY REGISTER ONE CATCHALL ('*') DRIVER.

Note: the class you need to register is your Connection class because this is the class that's responsible for instantiating the other classes that are part of your driver. It is possible to mix & match drivers -- i.e. to write a custom driver where the Connection object just instantiates stock classes for ResultSet and PreparedStatement. Note that if you wanted to "override" only the ResultSet class you would also have to override the Connection and PreparedStatement classes so that they would return the correct ResultSet class. In the future we may implement a more "packaged" approach to drivers; for now we want to keep it simple.

$phptype The phptype (mysql, mssql, etc.). This is first part of DSN URL (e.g. mysql://localhost/...). You may also specify '*' to register a driver that will "wrap" the any native drivers.
$dotpath A dot-path locating your class. For example 'creole.drivers.mssql.MSSQLConnection' will be included like: include 'creole/drivers/mssql/MSSQLConnection.php' and the classname will be assumed to be 'MSSQLConnection'.

Returns void

void Creole::deregisterDriver ( string $phptype ) [static]


Removes the driver for a PHP type. Note that this will remove user-registered drivers _and_ the default drivers.
$phptype The PHP type for driver to de-register.

See also registerDriver ()
Returns void

string Creole::getDriver ( string $phptype ) [static]


Returns the class path to the driver registered for specified type.
$phptype The phptype handled by driver (e.g. 'mysql', 'mssql', '*').

Returns string The driver class in dot-path notation (e.g. creole.drivers.mssql.MSSQLConnection) or NULL if no registered driver found.

Connection Creole::getConnection ( $dsn, int $flags = 0 ) [static]


Create a new DB connection object and connect to the specified database

mixed $dsn "data source name", see the self::parseDSN method for a description of the dsn format. Can also be specified as an array of the format returned by DB::parseDSN().
$flags Connection flags (e.g. PERSISTENT).

Returns Connection Newly created DB connection object

See also parseDSN ()

array Creole::parseDSN ( string $dsn ) [static]


Parse a data source name.

This isn't quite as powerful as DB::parseDSN(); it's also a lot simpler, a lot faster, and many fewer lines of code.

A array with the following keys will be returned:

  • phptype: Database backend used in PHP (mysql, odbc etc.)
  • protocol: Communication protocol to use (tcp, unix etc.)
  • hostspec: Host specification (hostname[:port])
  • database: Database to use on the DBMS server
  • username: User name for login
  • password: Password for login
The format of the supplied DSN is in its fullest form:

Most variations are allowed:

phptype://username:password@protocol+hostspec:110//usr/db_file.db phptype://username:password@hostspec/database_name phptype://username:password@hostspec phptype://username@hostspec phptype://hostspec/database phptype://hostspec phptype
$dsn Data Source Name to be parsed

Returns array An associative array

string Creole::import ( string $class ) [static]


Include once a file specified in DOT notation. Package notation is expected to be relative to a location on the PHP include_path.

Returns string unqualified classname
SQLException - if class does not exist and cannot load file
  • if after loading file class still does not exist

Member Data Documentation

const Creole::PERSISTENT = 1


Constant that indicates a connection object should be used.

const Creole::NO_ASSOC_LOWER = 16


Flag to pass to the connection to indicate that no case conversions should be performed by ResultSet on keys of fetched rows.

This file is part of the Creole[php5] library.

Copyright © 2004 Hans Lellelid  
Creole[php5] CVS