## Installing Currently the only way to install is via svn. So just checkout the trunk. $ svn co http://svn.doctrine-project.org/trunk/lib doctrine $ cd doctrine ## Loading Doctrine First we need to require one class, the `ClassLoader`. >**NOTE** > This assumes you've created some kind of script to test the following code in. Something like a `test.php` file. [php] // test.php require_once 'lib/Doctrine/Common/ClassLoader.php'; Now we need to instantiate the `ClassLoader` and register it: [php] $classLoader = new \Doctrine\Common\ClassLoader(); $classLoader->register(); The Doctrine `ClassLoader` supports the ability to use it for loading other classes with a prefix. Here are the recommend usages for the Doctrine `ClassLoader`: * Use only 1 class loader instance. * Set the base paths to your class libraries (including Doctrine's) through - [php] $classLoader->setBasePath($prefix, $basePath); For example you can set the path for Doctrine with the following: [php] $classLoader->setBasePath('Doctrine', '/usr/local/phplibs/doctrine/lib'); Then, when trying to load the class Doctrine\ORM\EntityManager, for example the class loader will look for /usr/local/phplibs/doctrine/lib/Doctrine/ORM/EntityManager.php * DO NOT setCheckFileExists(true). Doing so is expensive in terms of performance. * Use an opcode-cache (i.e. APC) (STRONGLY RECOMMENDED). ## Initialize Doctrine [php] $config = new \Doctrine\ORM\Configuration(); $config->setMetadataCacheImpl(new \Doctrine\ORM\Cache\ArrayCache); $eventManager = new \Doctrine\Common\EventManager(); $connectionOptions = array( 'driver' => 'pdo_sqlite', 'path' => 'database.sqlite' ); $em = \Doctrine\ORM\EntityManager::create($connectionOptions, 'doctrine', $config, $eventManager); ## Getting the Connection [php] $conn = $em->getConnection(); $conn->delete('table_name', array(1, 3, 10)); The DBAL Connection class has lots of useful functions. You can browse the code and check the API to get familiar. ## The Schema Manager The schema manager is a nice API for issuing database DDL statements like creating a table, or dropping a table. [php] $sm = $connection->getSchemaManager(); The schema manager allows you to do all the familiar options on your schema. Like `createTable()`. Below you will find an example: [php] $sm->createTable($tableName, $columns, $options); ## The Platform Object The platform object is the object that provides the appropriate SQL to the schema manager for the DDL statements. [php] $platform = $connection->getDatabasePlatform(); Now we can get the generated SQL instead of executing it directly: [php] $sql = $platform->getCreateTableSql($tableName, $columns, $options);