Avisota bietet dem Entwickler eine moderne Architektur

die etablierte und moderne Paradigmen einsetzt und damit ein Höchstmaß an Modularität schafft.

Dependency Injection

Die Komponenten lassen sich über den Dependency Injection Container überschreiben oder umkonfigurieren. Entwickler haben dadurch die Möglichkeit, ohne Codemanipulation ganze Teile des Systems anzupassen oder zu ersetzen.

<?php
global $container;

// access the avisota subscription manager
/** @var \Avisota\Contao\SubscriptionManager $subscriptionManager */
$subscriptionManager = $container['avisota.subscription'];

// subscribe global
$subscriptionManager->subscribe('me@example.com');

Datenverwaltung

Die internen Daten werden als Doctrine ORM Entities verwaltet. Außerdem hat jede Entität eine UUID anstelle einer numerischen ID. Dadurch ist die gesamte Datenstruktur höchst portabel und für die Entwickler sehr komfortabel im Zugriff.

<?php
// access the entity manager and get the recipient repository
/** @var \Contao\Doctrine\ORM\EntityHelper $entityManager */
$entityManager = EntityHelper::getEntityManager();
$repository = $entityManager->getRepository('Avisota\Contao:Recipient');

// search recipient by email
/** @var \Avisota\Contao\Entity\Recipient $recipient */
$recipient = $repository->findOneBy(array('email' => 'me@example.com'));

Event driven

Zur Anpassung interner Abläufe wird anstelle klassischer Contao Hooks ein vollwertiger Event Dispatcher eingesetzt. Für Entwickler eröffnen sich dadurch völlig neue Wege auf interne Abläufe zu reagieren oder diese zu manipulieren.

<?php
$GLOBALS['TL_EVENTS']['avisota-recipient-subscribe'][] = function(
	\Avisota\Contao\Event\SubscribeEvent $event
) {
	/** @var \Avisota\Contao\Entity\Recipient $recipient */
	$recipient = $event->getRecipient();
	
	/** @var \Avisota\Contao\Entity\RecipientSubscription $subscription */
	$subscription = $event->getSubscription();
	
	// do whatever you want
};

Was geht ab bei Avisota