Ez az osztálykönyvtár perzisztens megvalósítását teszi lehetővé PHP osztályoknak. Ezen kívül tartalmazza az R.E. Pagination néhány funkcióját, hogy a perzisztens objektumokat tartalmazó listát is lehessen inicializálni oldalanként.
R.E. DBObjects letöltése
Dokumentáció letöltése
Dokumentáció megtekintése
Előnyei
-
Frissítésnél és törlésnél nincs szükség sql kódok írására.
-
Az egyes adatbázis mezők objektum tulajdonságként kezelhetők. Így akár osztályon belül módosítható is az elérésük __get __set metódusokkal.
-
Egyedi metódusok definiálhatók a jellemzők kezelésére.
-
A kódolás egyszerűbb, gyorsabb, átláthatóbb.
Hátrányai
-
Összetett kulcsokat még nem tud kezelni.
-
Minden táblának tartalmaznia kell auto_increment elsődleges kulcsot.
-
A frissítés, törlés, lekérdezés valamivel lassabb lehet. Ez nyilvánvalóan adódik az előnyök megvalósításának idejéből.
-
Még nem képes több adatbázis kapcsolat egyidejű kezelésére
Példa a használatára:
//Ennek az osztálynak includeolása szükséges egyedül.
require_once 'REDBObjects/REDBObjects.class.php';
//Az összes mysql modult betölti a könyvtárból.
REDBObjects::uses('mysql');
mysql_connect('localhost', 'root', 'password');
mysql_select_db('teszt');
$list = new IsMySQLListClass(array(
'teszt'=>array('*')
));
$list->tableName_signal = 'T_'; //Ez az alapértelmezett is
$list->table_field_sep = '__'; //Az alapértelmezett az egy darab _ jel
//sql kód FROM utáni részét kell megadni limit nélkül.
//Plusz hogy hány rekordot kérdezzen le egy oldalra
$list->page("teszt where field like 'A%'", 10);
foreach ($list as $key => $object)
{
print $object->T_teszt__id.', '.$object->field.'<br />'.PHP_EOL;
if ($object->id == 2)
{
//Frissíti a field tulajdonság értékét.
$object->field = 'P';
$object->update();
}
}
?>
A T_ előtaggal kezdve a tulajdonságot, lehet hivatkozni közvetlenül egy táblára. Így több tábla összekapcsolása esetén, ha azonos mezőneveket is tartalmaznak, kiválasztható melyik tábla mezőjére vagyunk kíváncsiak. Egy objektum tulajdonságai csak az update() metódusának meghívásával frissíthetők az adatbázisban is. Ha az update() metódus false paraméterrel van hívva, akkor az adatbázist nem frissíti, de az értékeket módosítja az objektumban. Például új elem felvételekor.
A
print $list->pageLinks();
kódsorral a lapozó linkeket lehet kiírni. Ezt az R.E. Pagination-höz hasonlóan konfigurálni lehet.
Példa, objektum adatbázisba mentésére
REDBObjects::uses('mysql');
mysql_connect('localhost', 'root', 'password');
mysql_select_db('teszt');
class MyClass extends IsMySQLClass {}
class MyList extends IsMySQLListClass {}
$tablelist = array(
'table1'=>array('field1','field2'),
'table2'=>array('field3','field4'));
$object = new MyClass($tablelist);
$object->keyName = 'id';
$list = new MyList($tablelist,'MyClass');
$object->field1 = 'value1';
$object->field3 = 'value3';
// A tulajdonságokat lekérdezhetővé teszi,de nem frissíti az adatbázist,
// mivel nincs is mit
$object->update(false);
$list->add($object);
Példa, rekordok törlésére
$list->delete('T_table1_field1','value');
Ez törli a table1 táblából az összes olyan rekordot, amiben a field1 mező értéke egyenlő 'value' -val.
v2.1.1: 2012. április 29.
A 2.1.1-es verzió a lista objektumok lapozó linkjeinek megjelenítését javítja. Bizonyos esetekben több linket is megjelenített a kelleténél. Ezen kívül lényeges változás nincs. A Program működése nem változott, csak a forráskódban történt kisebb rendszerezés. A fontosabb információk kikerültek egy readme.txt -be