Seitenhierarchie
Zum Ende der Metadaten springen
Zum Anfang der Metadaten

 

Zusammenfassung

Alvine gliedert sich in das Framework, externe Bibliotheken, und Komponenten. Das Framework stellt die grundlegenden Funktionen als  Klassen zur Verfügung. Bei externen Bibliotheken, muss darauf geachtet werden, das die Lizenz eine Integration erlaubt. Der bessere Weg ist es einen Installer anzubieten, der die betreffende Bibliothek beim Kunden nachinstalliert. Die Komponenten stellen letztendlich die Funktionalität  bereit, die man für die Anwendung benötigt.

 


Beschreibung

Verzeichnisstruktur

Eine Alvine2 Anwendung kann einen beliebigen Aufbau haben, allerdings unterstützen die Frameworkklassen den vorgegebenen Aufbau besser. Wenn ein eigener Aufbau angestrebt wird, so müssen einige Klassen durch eigene Versionen ersetzt werden.

Aufbau

Ebene 1Ebene 2Ebene 3Ebene 4Ebene 5Beschreibung
application    Statische Anwendungsdaten (werden meist in ein Phar-Archive gepackt)
 

asset

   

alle Dateien auf die von extern zugegriffen werden soll (CSS, Bilder ...)

 

config

   

Konfigurationsdateien

 

 

assembly.properties  

Hauptkonfigurationsdatei

  route   
   web.xml XML-Routenbeschreibung
 

license

   

Lizenzdateien (z.B. von extern Tools)

 log   Logdateien (nur wenn /var/log/ nicht beschreibbar und Anwendung nicht als Phar)
 

resource

   

Anwendungsdateien wie Sprachdateien

  locale   
   de.properties Deutsche Sprachdatei
 source   Quelldateien (inklusive Main.class.php)
 dispatcher    
  web.php   
 web    
  asset   
  images   
  js   
  theme   
   <name_des_themes>  
    css 
    asset 
    image 
  vendor   
  w3c   
   p3p.xml 

P3P-Datei (Datenschutz)

<?xml version='1.0' encoding='iso-8859-1'?>
<!--<!DOCTYPE META PUBLIC '' 'http://www.w3.org/2002/01/P3Pv1'>
-->
<META xmlns='http://www.w3.org/2002/01/P3Pv1'>
  <POLICY-REFERENCES>
    <POLICY-REF about="#default">
      <INCLUDE>/*</INCLUDE>
      <COOKIE-INCLUDE name="JSESSIONID" />
      <COOKIE-INCLUDE name="TSESSION" />
      <COOKIE-INCLUDE name="VP" />
      <COOKIE-INCLUDE name="P" />
      <COOKIE-INCLUDE name="UNIQUE_USER" />
      <COOKIE-INCLUDE name="vfVoid" />
      <COOKIE-INCLUDE name="NSCTRID" />
      <COOKIE-INCLUDE name="HS_ID" />
    </POLICY-REF>
    <POLICY-REF about="#postview">
      <INCLUDE>/*</INCLUDE>
      <COOKIE-INCLUDE name="PV" />
      <COOKIE-INCLUDE name="PVvfVoid" />
      <COOKIE-INCLUDE name="PVNSCTRID" />
      <COOKIE-INCLUDE name="PVHS_ID" />
    </POLICY-REF>
  </POLICY-REFERENCES>
  <POLICIES>
    <POLICY name="default"
          discuri="http://www.example.com/privacy"
          opturi="http://www.example.com/privacy"
	  xml:lang="de">
      <ENTITY>
	<DATA-GROUP>
	  <DATA ref="#business.name">company</DATA>
	  <DATA ref="#business.contact-info.postal.street">adress</DATA>
	  <DATA ref="#business.contact-info.postal.postalcode">12345</DATA>
	  <DATA ref="#business.contact-info.postal.city">Berlin</DATA>
	  <DATA ref="#business.contact-info.postal.country">Germany</DATA>
	  <DATA ref="#business.contact-info.telecom.fax.loccode">030</DATA>
	  <DATA ref="#business.contact-info.telecom.fax.number">000000000000</DATA>
	  <DATA ref="#business.contact-info.online.email">service@example.com</DATA>	  
	</DATA-GROUP>
      </ENTITY>
      <ACCESS><ident-contact/></ACCESS>
      <STATEMENT>
	<PURPOSE><contact required="opt-in"/><current/><develop/><pseudo-analysis/></PURPOSE>
	<RECIPIENT><ours/><delivery/></RECIPIENT>
	<RETENTION><stated-purpose/></RETENTION>
	<DATA-GROUP>
	  <DATA ref="#user.name"/>
	  <DATA ref="#user.bdate"/>
	  <DATA ref="#user.gender"/>
	  <DATA ref="#user.home-info"/>
	  <DATA ref="#thirdparty.name"/>
	  <DATA ref="#thirdparty.home-info"/>
	  <DATA ref="#dynamic.miscdata"><CATEGORIES><purchase/></CATEGORIES></DATA>
	  <DATA ref="#dynamic.miscdata"><CATEGORIES><content/></CATEGORIES></DATA>
	  <DATA ref="#dynamic.clickstream"/>
	  <DATA ref="#dynamic.http"/>
	  <DATA ref="#dynamic.cookies"><CATEGORIES><navigation/><state/></CATEGORIES></DATA>
	</DATA-GROUP>
      </STATEMENT>
    </POLICY>
    <POLICY name="postview"
          discuri="http://www.example.com/privacy"
          opturi="http://www.example.com/privacy"
	  xml:lang="de">
      <ENTITY>
	<DATA-GROUP>
  <DATA ref="#business.name">company</DATA>
	  <DATA ref="#business.contact-info.postal.street">adress</DATA>
	  <DATA ref="#business.contact-info.postal.postalcode">12345</DATA>
	  <DATA ref="#business.contact-info.postal.city">Berlin</DATA>
	  <DATA ref="#business.contact-info.postal.country">Germany</DATA>
	  <DATA ref="#business.contact-info.telecom.fax.loccode">030</DATA>
	  <DATA ref="#business.contact-info.telecom.fax.number">000000000000</DATA>
	  <DATA ref="#business.contact-info.online.email">service@example.com</DATA> 
	</DATA-GROUP>
      </ENTITY>
      <ACCESS><nonident/></ACCESS>
      <STATEMENT>
      <NON-IDENTIFIABLE/>
	  <PURPOSE><pseudo-analysis/></PURPOSE>
	  <RECIPIENT><ours/></RECIPIENT>
	  <RETENTION><business-practices/></RETENTION>
	<DATA-GROUP>
	  <DATA ref="#dynamic.clickstream"/>
	  <DATA ref="#dynamic.http"/>
	  <DATA ref="#dynamic.cookies"><CATEGORIES><navigation/><state/></CATEGORIES></DATA>
	</DATA-GROUP>
      </STATEMENT>
    </POLICY>
  </POLICIES>
</META>

  crossdomain.xml  

Zugriff

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
    <!-- Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->
    <!-- Most restrictive policy: -->
    <site-control permitted-cross-domain-policies="none"/>
    <!-- Least restrictive policy: -->
    <!--
    <site-control permitted-cross-domain-policies="all"/>
    <allow-access-from domain="*" to-ports="*" secure="false"/>
    <allow-http-request-headers-from domain="*" headers="*" secure="false"/>
    -->
</cross-domain-policy>

  index.php  
<?php 
require_once \realpath(__DIR__.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'dispatcher/web.php');
  robots.txt  Suchmaschinenzugriff (siehe http://de.wikipedia.org/wiki/Robots_Exclusion_Standard)
  development.php  
<?php
/**
 * ALVINE
 * 
 * COPYRIGHT: All  title   and  proprietary  rights,  including  trade
 * secrets,   in   the   Software   and   any   copies thereof and the
 * accompanying  written   materials,   are  owned  by   schukai  GmbH
 * and  are  protected  by  German  copyright  laws,  other applicable
 * copyright   laws  and  international  treaty  provisions.
 * 
 * @category   Framework
 * @author     schukai GmbH <info@schukai.de>
 * @copyright  2002 - 2015 schukai GmbH
 * @license    http://www.alvine.de/license/ 
 * @version    Release: $Revision: 897 $
 * @link       http://alvine.io/ Webseite
 */

/** Keine Resourcen mit dem PHP-Interpreter ausliefern */ 
if(\preg_match('/\.(?:png|jpg|css|js|pdf|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
    return false; // Liefere die angefragte Ressource direkt aus
} else {
    include(__DIR__.DIRECTORY_SEPARATOR.'index.php');
}
  humans.txt  siehe http://humanstxt.org/de
  favicon.ico   
deployment     
 build    
  phar   
   stub.php Optionale Stubdatei für das Erstellen des Phar-Archives. Ist keine Datei vorhanden, so wird der Standard genommen
 script    
 vendor    
  alvine  Alvine-Komponenten als Phar-Archive
documentation     
  uml  UML-Diagramme (plantUML)
development     
 playground    
  php  PHP-Testskripte
 feasibility   Aktuell nicht benötigte Dateien
 script   Entwicklerskripte
 tests    
  application  Testfälle
  asset   
   files Testdaten
  script   
   bootstrap.inc.php Initialisierung der Unit-Tests

Konfiguration

In der Datei assembly.config gibt es zwei Pflichtangaben. Zum einen muss dieHauptklasse und zum anderen der auszuführende Task definiert werden. In dem Beispiel wird das Objekt \Alvine\Assembly\A\A erzeugt und im Anschluß die Methode A->init() aufgerufen. Weitere Task können in der Datei als application.task.abc angegeben werden. abc ist dabei ein beliebiger name, der aber nur einmal in der Datei vorkommen darf. 

# Vollständiger Klassenname einer von Assembly abgeleiteten Klasse
application.class=\Alvine\Assembly\A\A
 
# Initialisieren der Anwendung
application.task.init=init
 
# Konfiguration der Klassen prüfen 
application.systemcheck=false

 

 

KonfigurationsschlüsselBeschreibungStandardwertBeispielMögliche Werte
application.class

Klassenname mit Namespace der Anwendung

 

\Alvine\Assembly\A\A

 
application.task.init
Initialisierung der Klasse erfolgt über diese Methode init 
application.systemcheck

Konfiguration der Klassen prüfen

falsefalse
trueSystemprüfung eingeschaltet
falsePrüfung ausgeschalten 

 

 


Ressourcen

 


Feedback

Waren diese Informationen hilfreich?

 


Historie

Version Datum Kommentar
Aktuelle Version (v. 1) 07.Feb.2017 19:07 Volker Schukai