Tipp: update auf adodb 5.06a

In diesem Board könnt Ihr alle "allgemeinen" Fragen zum Thema MyOOS stellen.
Antworten
r23
Beiträge: 2622
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Beitrag von r23 »

Hallo,

wir verwenden im MyOOS Projekt den Datenbankabstraktionslayer adodb
Was ist eine Datenbankabstraktion?
Wenn Sie mit Datenbanken arbeiten, haben Sie sicherlich bereits gemerkt, dass jede ihre Eigenheiten hat. (so unterscheiden sich beispielsweise häufig die einsetzbaren Datentypen). Wollen Sie also Ihren PHP-Code von einer MySQL- auf eine Oracle-Datenbank umstellen, müssen Sie all diese Unterschiede kennen und beseitigen. Und genau an diesem Punkt greift die Datenbankabstraktion. Denn hierdurch ist es möglich, einen einmal erstellten Programmcode auch nach einem Datenbankwechsel (fast) unverändert zu übernehmen. Datenbankabstraktionen erlauben einen einfacheren Zugriff auf Datenbanken durch

* eine automatische Verbindungsaufnahme zur Datenbank
* die Speicherung der Zugriffsparameter in einer Include-Datei
* das Verbergen von datenbankspezifischen Eigenschaften.
http://phpmagazin.de/itr/online_artikel ... ge,de.html

ADOdb Tutorial (Deutsch)
http://phplens.com/phpeverywhere/adodb_german

Wir liefern mit dem MyOOS Projekt die adodb Version 4.9x für php 4 und php 5 aus.
Damit können Anwender die aktuellen MyOOS Versionen unter PHP 4 und PHP 5 verwenden.

Dies hat allerdings den Nachteil, dass Anwender von PHP 5 den langsamen Code von PHP 4 mit schleppen.
Und für diese Anwender gebe ich diesen Tipp.

Adodb gibt es für PHP 5 optimiert.
http://sourceforge.net/project/showfile ... p_id=42718

Hier die aktuelle Relaese Notes
Release Name: adodb-506-for-php5

Notes:
5.06a is a patch release of 5.06. It fixes two issues in Active Record:

- Missing Find() function
- LoadRelations() $whereOrderBy param that does not need to begin with 'AND' any more.

Major Changes
============
* New one-to-many record support for active record.
* New pdo-sqlite driver.
* Bug fixes.


Active Record Improvements
==========================
New HasMany() and BelongsTo() functionality. For example:

class person extends ADOdb_Active_Record{}

$person = new person();
$person->HasMany('children','person_id');
$person->Load("id=1");
foreach($person->children as $c) {
echo " $c->name_first ";
$c->name_first .= ' K.';
$c->Save(); ## each child record must be saved individually
}

You can also define BelongsTo:

class Child extends ADOdb_Active_Record{};
$ch = new Child('children',array('id'));
$ch->BelongsTo('person','person_id','id'); ## this can be simplified to $ch->BelongsTo('person')
## as foreign key defaults to $table.'_id' and
## parent pkey defaults to 'id'
$ch->Load('id=1');
$p = $ch->person;


See http://phplens.com/lens/adodb/docs-acti ... #onetomany for more info

Changes:
** Added driver adodb-pdo_sqlite.inc.php.
Thanks Diogo Toscano (diogo#scriptcase.net) for the code.
** Added support for <a href=docs-active-record.htm#onetomany>one-to-many relationships</a> with BelongsTo() and HasMany() in adodb_active_record.
** Added BINARY type to mysql.inc.php (also in 4.991).
** Added support for SelectLimit($sql,-1,100) in oci8. (also in 4.991).
** New $conn->GetMedian($table, $field, $where='') to get median account no. (also in 4.991)
** The rs2html() function in tohtml.inc.php did not handle dates with ':' in it properly. Fixed. (also in 4.991)
** Added support for connecting to oci8 using $DB->Connect($ip, $user, $pwd, "SID=$sid"); (also in 4.991)
** Added mysql type 'VAR_STRING' to MetaType(). (also in 4.991)
** The session and session2 code supports setfetchmode assoc properly now (also in 4.991).
** Added concat support to pdo. Thx Andrea Baron.
** Changed db2 driver to use format "Y-m-d H-i-s" for datetime instead of "Y-m-d-H-i-s" which was legacy from odbc_db2 conversion.
** Removed vestigal break on adodb_tz_offset in adodb-time.inc.php.
** MetaForeignKeys did not work for views in MySQL 5. Fixed.
** Changed error handling in GetActiveRecordsClass.
** Added better support for using existing driver when $ADODB_NEWCONNECTION function returns false.
** In _CreateSuffix in adodb-datadict.inc.php, adding unsigned variable for mysql.
** In adodb-xmlschema03.inc.php, changed addTableOpt to include db name.
** If bytea blob in postgresql is null, empty string was formerly returned. Now null is returned.
** Changed db2 driver CreateSequence to support $start parameter.
** rs2html() now does not add nbsp to end if length of string > 0
** The oci8po FetchField() now only lowercases field names if ADODB_ASSOC_CASE is set to 0.
** New mssqlnative drivers for php. TQ Garrett Serack of M'soft. <a href=http://www.microsoft.com/downloads/deta ... ownload</a> mssqlnative extension.
Note that this is still in beta.
** Fixed bugs in memcache support.
** You can now change the return value of GetOne if no records are found using the global variable $ADODB_GETONE_EOF. The default is null. To change it back to the pre-4.99/5.00 behaviour of false, set $ADODB_GETONE_EOF = false;
** In Postgresql 8.2/8.3 MetaForeignkeys did not work. Fixed William Kolodny William.Kolodny#gt-t.net


Der Wechsel von adodb-php-4-and-5 nach adodb-php5-only ist denkbar einfach:

Systemvorrsuetzungen:
PHP 5 in einer aktuellen Version

Der Layer liegt bei der Version 1.7.x in dem Verzeichnis
~/shop/includes/classes/thirdparty/adodb
die Dateien und Verzeichnisse alle löschen

In das leere Verzeichnis die Dateien aus dem "Package" ~/adodb5 kopieren.

Änderungen am System sind nicht notwendig!

Bei älteren Shop-Versionen ist der Admin und Shop noch getennt - so findet man auch
unter
~/shop/includes/classes/adodb die PHP Klassen. Dann auch hier einfach die Dateien
löschen und durch die neuen ersetzen.


Für Rückfragen und Anregungen stehe ich gern zur Verfügung


cu

r23
Antworten