This project is no longer maintained and has been archived. |
Extensions
The Doctrine extensions are a way to create reusable Doctrine extensions that can be dropped into any project and enabled. An extension is nothing more than some code that follows the Doctrine standards for code naming, autoloading, etc.
In order to use the extensions you must first configure Doctrine to know the path to where your extensions live:
$ Doctrine_Core::setExtensionsPath( '/path/to/extensions' );
Lets checkout an existing extension from SVN to have a look at it. We'll
have a look at the Sortable
extension which bundles a behavior for
your models which give you up and down sorting capabilities.
$ svn co http://svn.doctrine-project.org/extensions/Sortable/branches/1.2-1.0/ /path/to/extensions/Sortable
If you have a look at /path/to/extensions/Sortable
you will see a
directory structure that looks like the following:
Sortable/
lib/
Doctrine/
Template/
Listener/
Sortable.php
Sortable.php
tests/
run.php
Template/
SortableTestCase.php
To test that the extension will run on your machine you can run the test
suite for the extension. All you need to do is set the DOCTRINE_DIR
environment variable.
$ export DOCTRINE_DIR=/path/to/doctrine
The above path to Doctrine must be the path to the main
folder, not just the lib folder. In order to run the tests it must
have access to the |
It is possible now to run the tests for the Sortable
extension:
$ cd /path/to/extensions/Sortable/tests
$ php run.php
You should see the tests output the following showing the tests were successful:
Doctrine Unit Tests
===================
Doctrine_Template_Sortable_TestCase.............................................passed
Tested: 1 test cases.
Successes: 26 passes.
Failures: 0 fails.
Number of new Failures: 0
Number of fixed Failures: 0
Tests ran in 1 seconds and used 13024.9414062 KB of memory
Now if you want to use the extension in your project you will need register the extension with Doctrine and setup the extension autoloading mechanism.
First lets setup the extension autoloading.
// bootstrap.php
// ...
spl_autoload_register( array( 'Doctrine', 'extensionsAutoload' ) );
Now you can register the extension and the classes inside that extension will be autoloaded.
$ manager->registerExtension( 'Sortable' );
If you need to register an extension from a different
location you can specify the full path to the extension directory as
the second argument to the |