At the core of TDBM, there is the
TDBMService class. This service is used to generate the PHP code, and also by all DAOs to retrieve beans from the database.
TDBMService constructor takes a
Configuration object that contains all the configuration needed by TDBM.
Depending on the framework you are using (and the integration package you chose), the way the
Configuration object is set-up will vary.
Hopefully, if your framework is not supported yet (or if you use no framework), setting up TDBM yourself is quite easy to do.
$ composer require thecodingmachine/tdbm ^5.1
We strongly advise to use the
APCuCache from Doctrine that will yield the best performances.
Without using any framework, a working TDBM setup could look like this:
$config = new \Doctrine\DBAL\Configuration(); $connectionParams = array( 'user' => 'mysql_user', 'password' => 'mysql_password', 'host' => 'localhost', 'driver' => 'pdo_mysql', 'dbname' => 'my_db', ); $dbConnection = Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config); // The bean and DAO namespace that will be used to generate the beans and DAOs. These namespaces must be autoloadable from Composer. $beanNamespace = 'MyApp\\Beans'; $daoNamespace = 'MyApp\\Daos'; $cache = new Doctrine\Common\Cache\ApcuCache(); $logger = new Monolog\Logger(); // $logger must be a PSR-3 compliant logger (optional). // Let's build the configuration object $configuration = new TheCodingMachine\TDBM\Configuration( $beanNamespace, $daoNamespace, $dbConnection, null, // An optional "naming strategy" if you want to change the way beans/DAOs are named $cache, null, // An optional SchemaAnalyzer instance $logger, // An optional logger  // A list of generator listeners to hook into code generation ); // The TDBMService is created using the configuration object. $tdbmService = new TDBMService($configuration);
Ok, we have our
$tdbmService. What's next?
In order to generate the DAOs and beans, you simply need to call the
$tdbmService->generateAllDaosAndBeans(); // Shazam! All PHP files have been written!
If your application supports the Symfony console, Mouf comes with a "tdbm:generate" command that will generate those DAOs and beans:
// The command takes in parameter the same Configuration object used by the TDBMService. $command = new TheCodingMachine\TDBM\Commands\GenerateCommand($configuration); // $application is your Symfony console object $application->add($command);
You now have one DAO per database table. In order to create a DAO, you simply need pass it the
$userDao = new UserDao($tdbmService); $user = $userDao->getById(42); echo $user->getLogin();
The code samples above are here to help you understand the way
TDBMService is instantiated.
Of course, in a real application, you will want to put the
TDBMService and every generated DAOs in a container.
You will typically inject the DAOs in your code and will seldom use the
Let's now learn how to access the database.
Found a typo? Something is wrong in this documentation? Just fork and edit it!