Zum Inhalt springen

Vorstellung: ARP Creator

Erstellt am 3. April 2008 · Noch keine Antworten

Tags: Info

dyne ·

Hi ich möchte meine neue Extension den ARP Creator (arpcreator) vorstellen, der gerade brandneu in der 0.1 Beta-Version im TER zum Download steht.

Der ARP-Creator hat ein Backend-Modul, das die installierten Extensions und deren Tabellen ausliest.
Für "local" installierte Extensions mit einer ordentlichen "tca.php" bietet er die Möglichkeit für jede Ext-Tabelle eine sog. ARP-Klasse zu generieren.
Es wird eine File mit einem Namen wie class.myext_item_arp.php erstellt und die beinhaltete Klasse setzt das "Active Record Pattern" für die entsprechende Tabelle um, so dass die Klasse sich folgendermaßen (z.B. in einem FE-Plugin) benutzen lässt:

<?php

require_once('../class.myext_item_arp.php');


//
// Working with an existing record by uid:
//    
$item = new myext_item_arp(2);    // Object $item now contains the data of the record with uid 2 of the item table
echo $item->title;
$item->title = 'supertest';    // new data is stored in the object
$item->update();                // new data is saved to db


//
// Working with an existing record by other field:
//    
$item = myext_item_arp::findByField('title', 'supertest');    // Only the first matching record will be returned
echo $item->uid;                                                // E.g. 2


//
// Creating new Record
//
$item = new myext_item_arp;
$item->title = 'new record';
$time = time();
$item->tstamp = $time;
$item->crdate = $time;
$item->descr = 'This is the new record';
$item->insert();                                    // Saves the new record to DB
echo $item->uid;                                    // Automatically contains the received uid

//
// Using 1:n-Objects
//
// Assume item table has a field 'cat' pointing to the uid of a category table,
// which is also part of the same extension. They both have an ARP Class.
$item = new tx_myext_item(2);
echo $item->cat;                    // Returns the uid of the category;
echo $item->cat->title                // Returns the field 'title' of the category record
$item->cat->title = 'new title';
$item->cat->update();                // Also works!

?>

Wie immer bin ich offen für Vorschläge, Meinungen, Kritik und Lob.

P.S.: Alle Daten werden per später Initialisierung ausgelesen um Ressourcen zu sparen.

Edit: Die 0.1 verursachte einen Fatal Error. Habe eine neue Version losgeschickt.