98 lines
3.6 KiB
PHP
98 lines
3.6 KiB
PHP
<?php
|
|
include("top.php");
|
|
?>
|
|
|
|
|
|
<table width="100%" cellspacing=0 cellpadding=0>
|
|
<tr>
|
|
<td width=50>
|
|
<td>
|
|
<td align="left" valign="top">
|
|
<table width="100%" cellspacing=1 cellpadding=1>
|
|
<tr>
|
|
<td bgcolor="white">
|
|
<img src="images/logo.jpg" align="left"><b class="title">Doctrine - PHP Data Persistence and ORM Tool</b>
|
|
<hr>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
|
|
|
|
<ul>
|
|
<b class='title'>GENERAL FEATURES</b>
|
|
<ul>
|
|
<li \> Fully object-oriented following best practices and design patterns
|
|
<li \>Multiple databases
|
|
<li \>Database connection pooling with connection-record -registry
|
|
<li \>Runtime configuration (no XML needed!)
|
|
<li \>Very modular structure (only uses the needed features)
|
|
<li \>The runtime components can be compiled into a single file
|
|
<li \>Leveled configuration (attributes can be set at global, connection and table levels)
|
|
</ul>
|
|
<br \>
|
|
<b class='title'>DATABASE ABSTRACTION</b>
|
|
<ul>
|
|
<li \>A DSN (data source name) or array format for specifying database servers
|
|
<li \>Datatype abstraction and on demand datatype conversion
|
|
<li \>supports PDO
|
|
<li \>Database query profiling
|
|
<li \>Query caching
|
|
<li \>Sequence / autoincrement emulation
|
|
<li \>Replace emulation
|
|
<li \>RDBMS management methods (creating, dropping, altering)
|
|
<li \>SQL function call abstraction
|
|
<li \>SQL expression abstraction
|
|
<li \>Pattern matching abstraction
|
|
<li \>Portable error codes
|
|
<li \>Nested transactions
|
|
<li \>Transaction isolation abstraction
|
|
<li \>Transaction savepoint abstraction
|
|
<li \>Index/Unique Key/Primary Key support
|
|
<li \>Ability to read the information schema
|
|
<li \>Reverse engineering schemas from an existing database
|
|
<li \>LIMIT / OFFSET emulation
|
|
</ul>
|
|
<br \>
|
|
<b class='title'>OBJECT RELATIONAL MAPPING</b>
|
|
<ul>
|
|
<b class='title'>General features</b>
|
|
<li \>Validators
|
|
<li \>Transactional errorStack for easy retrieval of all errors
|
|
<li \>EventListeners
|
|
<li \>UnitOfWork pattern (easy saving of all pending objects)
|
|
<li \>Uses ActiveRecord pattern
|
|
<li \>State-wise records and transactions
|
|
<li \>Importing existing database schemas to Doctrine ActiveRecord objects
|
|
<li \>Exporting Doctrine ActiveRecords to database (= automatic table creation)
|
|
<br \><br \>
|
|
<b class='title'>Mapping</b>
|
|
<li \>Composite, Natural, Autoincremented and Sequential identifiers
|
|
<li \>PHP Array / Object data types for columns (automatic serialization/unserialization)
|
|
<li \>Gzip datatype for all databases
|
|
<li \>Emulated enum datatype for all databases
|
|
<li \>Datatype abstraction
|
|
<li \>Column aggregation inheritance
|
|
<li \>One-class-one-table inheritance as well as One-table
|
|
<li \>One-to-many, many-to-one, one-to-one and many-to-many relations
|
|
<li \>Self-referencing relations even for association table relations
|
|
<li \>Relation aliases
|
|
<br \><br \>
|
|
<b class='title'>Object population</b>
|
|
<li \>DQL (Doctrine Query Language), an EJB 3 spec compliant OQL
|
|
<li \><b>The limit-subquery-algorithm</b>
|
|
<li \>OO-style query API for both DQL and raw SQL
|
|
<li \>Object population from database views
|
|
<li \>Object population through raw SQL
|
|
<br \><br \>
|
|
<b class='title'>Transactions and locking</b>
|
|
<li \>Pessimistic offline locking
|
|
<li \>Savepoints, transaction isolation levels and nested transactions
|
|
<li \>Transactional query optimization (gathering of DELETE statements)
|
|
</ul>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
</tr>
|
|
</table>
|