one abstraction layer (my proposal for)

From: Date: Sun, 02 Dec 2001 04:53:12 +0000
Subject: one abstraction layer (my proposal for)
Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-3280@lists.php.net to get a copy of this message
I'm out of battles and want to explain my proposal for the idea of a new abstraction layer that could benefit for all: Goals ===== 1) User selects mode: speed or portability (default) 2) Speed: 2.1) Non critical features are included by demand 2.2) There is public access to the database resources, letting people the chance to interact directly with native calls when he want 2.3) The more common database functions (connect, query and fetch) will be as lightweight as posible 2.4) C rewrite when stable 3) Portability: 3.1) All the features are avaible in all the backends (emulated when posible and native is not avaible) 4) Features (in no special order) 4.1) Unified and Extreamly Easy OO API 4.2) Prepare/Execute 4.3) Secuencial & Non Secuencial Row Fetching 4.4) Quick data fetch (get*() methods) 4.5) LOB support 4.6) PEAR Error support and abstracted database error messages 4.7) Information: about the database internals, the results, the errors 4.8) Datatype conversion functions 4.9) Data quoting (manual & automatic) 4.10) Limited queries 4.11) Sequences 4.12) Transactions 4.13) Results cache 4.14) SQL language builder/helper/parser (?) 4.15) Database Manager (create/drop of databases, tables, sequences, ...) 4.16) Strong and deep test suite 4.17) DocBook Manual, PHPDoc API, translations and annotated manual 4.18) Easy distribution/installation with the Pear Installer Ideas Corner ============ * Pear DB as the base code reviwed for the speed requirements and opened to plug-in features on demand. * (4.5) LOB support exchanged from Metabase * (4.8) Data Type conversion to be done by a more generic class PEAR_DataType (suitable to be used in other enviroments too, like xmlrpc, etc) * (4.13) Results cache to be done by the PEAR_Cache class * (4.15) Exchanged from Metabase * Development open to any experienced developer willing to contribute, the code will reside in the PHP CVS and the communication in php-db or pear-dev. * Developers from other abstraction layer packages are very very welcome * The credits will go for all the people who has or is contributing * No backwards compatibility fright. PHP 4.1 could be the first supported version * (4.16) A mix of: PHP tests/PHPUnit/Metabase Driver Conformance * (4.17) All open Margin notes: - This is just my attempt to see the "DB_One" class done - Maybe there is some part missing please say it - Possible enhancements are welcome - I, of course, make me volunteer - I'll ignore flames or statement out of pure technical (please keep them in other thread or even better: privately) - 80% usable in two-three months 2c's from my part, Tomas V.V.Cox

« previous php.pear.dev (#3280) next »