PropelServiceProvider
, (*1)
The PropelServiceProvider provides integration with Propel., (*2)
Parameters
-
propel.path (optional): The path in which Propel.php will be found. Usually, for
PEAR installation, it is propel
while for Git installation it is
vendor/propel/runtime/lib
.
Default is /full/project/path/vendor/propel/propel1/runtime/lib
., (*3)
-
propel.config_file (optional): The name of Propel configuration file with full path.
Default is /full/project/path/build/conf/projectname-conf.php
, (*4)
-
propel.model_path (optional): Path to where model classes are located.
Default is /full/project/path/build/classes
, (*5)
It's strongly recommanded to use absolute paths for previous options., (*6)
Services
No service is provided., (*7)
Propel configures and manages itself by using static methods, so no service is registered into Application.
Actually, the PropelServiceProvider class initializes Propel in a more "Silex-ian" way., (*8)
Registering
Make sure you place a copy of Propel in vendor/propel
or install it through PEAR, or Composer., (*9)
For more informations consult the Propel documentation:, (*10)
``` php
<?php, (*11)
$app['propel.config_file'] = DIR.'/path/to/myproject-conf.php';
$app['propel.model_path'] = DIR.'/path/to/model/classes';
$app->register(new Propel\Silex\PropelServiceProvider());, (*12)
Alternatively, if you 've installed Propel by Git in `vendor/propel` and
you built your model with default Propel generator options:
``` php
<?php
$app->register(new Propel\Silex\PropelServiceProvider());
We can consider "default" Propel generator options:, (*13)
-
Put build.properties
and schema.xml
files into the main directory project,
usually where file index.php
is located., (*14)
-
In build.properties
file, define only propel.database
, propel.project
and propel.namespace.autopackage
properties., (*15)
Usage
You'll have to build the model by yourself. According to Propel documentation, you'll need three files:, (*16)
-
schema.xml
which contains your database schema;, (*17)
-
build.properties
more information below;, (*18)
-
runtime-conf.xml
which contains the database configuration., (*19)
Use the propel-gen
script to create all files (SQL, configuration, Model classes)., (*20)
By default, the PropelServiceProvider relies on the Silex autoloader you have to configure to load
model classes. Of course, the Silex autoloader needs the model to be built with namespaces,
so be sure to set this property into the build.properties
file:, (*21)
``` yaml
propel.namespace.autopackage = true, (*22)
The recommended configuration for your build.properties
file is:, (*23)
propel.project = , (*24)
propel.namespace.autoPackage = true
propel.packageObjectModel = true, (*25)
Enable full use of the DateTime class.
Setting this to true means that getter methods for date/time/timestamp
propel.useDateTimeClass = true, (*26)
Specify a custom DateTime subclass that you wish to have Propel use
for temporal values.
propel.dateTimeClass = DateTime, (*27)
temporal columns in Propel. You can always specify these when calling the
methods directly, but for methods like getByName() it is nice to change
the defaults.
To have these methods return DateTime objects instead, you should set these
to empty values
propel.defaultTimeStampFormat =
propel.defaultTimeFormat =
propel.defaultDateFormat =
```, (*28)
If you plan to build your model without using namespaces, you need to force Propel to use
its internal autoloader. Do this by setting the option propel.internal_autoload
to true
., (*29)
For more information, consult the Propel documentation., (*30)