Erste Schritte

Nach dem erfolgreichen Download der Phar Archive kann das erste kleine Anwendungsscript erstellt werden. Dazu legen wir die Datei myapp.php an.

include_once '/phar/alvine.framework-snapshot.phar';
include_once '/phar/alvine.persistence.provider.mysql-snapshot.phar';

Als nächstes benötigen wir eine MySQL-Datenbank. Diese kann einfach mittels Docker erstellt werden. Dazu muss zuerst das offizielle Docker-Image heruntergeladen werden.

docker pull mysql

Im Anschluß muss ein Container mit dem offenen Port 3306 gestartet werden.

docker run --name alvine-mysql -e MYSQL_ROOT_PASSWORD=secret -d -p 3306:3306  mysql

Für unser Beispiel benötigen wir zuerst eine Datenbank, die wir über den folgenden Befehl anlegen:

Soll eine bereits vorhandene Datenbank verwendet werden, so kann dieser Schritt übergangen werden und die Tabelle in die bestehende Datenbank eingefügt werden. In diesem Fall ist der Datenbankbezeichner alvine in den Beispielen entsprechend anzupassen.

CREATE DATABASE alvine;
USE alvine;

In dieser Datenbank wird nun eine Tabelle angelegt. Hierzu verwenden wir folgendes SQL-Query verwendet werden.

CREATE TABLE IF NOT EXISTS `object` (
   `sys_ID` varchar(255) NOT NULL 
            COMMENT 
            'ID des Objektes, bei Alvine-Objekten ist dies eine UUID',
   `sys_so` text NOT NULL 
            COMMENT 'Serialisierte Objektdaten',
   `sys_creation` datetime NOT NULL 
            COMMENT 
            'Dieses Objekt wurde zu diesem Zeitpunkt erstellt',
   `sys_lastupdate` datetime NOT NULL 
            COMMENT 
            'Die letzte Änderung am Objekt erfolgte zu dieser Zeit',
   PRIMARY KEY  (`sys_ID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 
            COMMENT='Speicher für Alvine-Objekte';

Als nächstes können wir in der Datei myapp.php die URI der Datenbank notieren.

$uri = new \Alvine\Net\Resource\URI('mysql://root:secret@localhost:3306/alvine/object');

Jetzt können die CRUD-Anweisungen des DataObjektes verwendet werden.

// Datenobjekt erstellen ($uri ist vom Typ \Alvine\Net\Resource\URI).
$dataObject=new \Alvine\Persistence\Provider\MySQL\DataObject($uri);

$id = 'my-value-1';

// Inahlt schreiben
$dataObject->write($id, 'Test');

// Inhalt überschreiben
$dataObject->update($id, 'Neuer Wert');

// Inhalt der ID lesen
$result = $dataObject->read($id);
echo $result;
// -> Neuer Wert

// Objekt löschen
$dataObject->delete($id);

Voila!