\section{System - PHP Framework}
\frame{
	\begin{block}{}
  	\begin{center}
  	\huge{System - PHP Framework}
	\end{center}
  	\end{block}
}			

\subsection{Anwendungsbereich}
\frame{
	\frametitle{Anwendungsbereich von System}
	System kann in PHP-basierten Anwendungen eingesetzt werden.
	\begin{block}{Anwendungsbereich}
	\begin{itemize}
	\item{Websites}
   	\item{Webtools}
	\item{Webapps}
	\end{itemize}
	\end{block}
}

\subsection{Features}
\frame{
	\frametitle{Features von System}
	System vereichfacht die Entwicklung von PHP basierten Anwendungen
	\begin{block}{Features}
	\begin{itemize}
	\item{Kapselung}
   	\item{REST Schnittstelle}
	\item{Moderne Webtechnologien}
	\item{Utilities}
	\item{Modulare GUI für administrative Aufgaben}
	\end{itemize}
	\end{block}
	Teilintegration möglich
}
	
\subsubsection*{Kapselung}
\frame{
	\frametitle{Klassische Struktur von PHP Projekten}
	\begin{block}{}
	Die klassische Strucktur von PHP Projekten orientiert sich oft an der HTML Struktur.
	In den entsprechenden HTML-Div's werden weitere PHP-Scripts included. Das birgt Nachteile.
	\begin{itemize}
	\item{HTML Code ist unübersichtlich}
	\item{Programm ist eine Datei, zerteilt in Abschnitte}
	\item{Definitionen in anderen Abschnitten des Programms}
	\item{Spezialwissen notwendig für die Wartung}
	\end{itemize}
	\end{block}
}

\frame{
	\frametitle{Kapselung in System}
	Eine Gute Kapselung vereinfacht die Übersicht über das programm. Der Programmierer soll nur die Struktur verstehen und kann den gesuchten Inhalt schnell lokalisieren. 
	\begin{block}{Kapselung von System}
		\begin{itemize}
			\item{nach Sprache}
			\item{nach Art der Rückgabe (Website/Daten/Administratives)}
			\item{Nach Sinneinheit (Seiten/Module)}
		\end{itemize}
	\end{block}
}
	
\frame{
	\frametitle{Kapselung nach Sprache}
	Die Kapselung nach Sprache implemntiert ein MVC-Modell

	Der Begriff model view controller (MVC) ist ein Muster zur Strukturierung von Software-Entwicklung in die drei Einheiten Datenmodell, Präsentation und Programmsteuerung. wikipedia
	\begin{block}{MVC durch Kapselung nach Sprache}
	\begin{itemize}							
		\item{PHP (Controller Server)}
		\item{SQL (Model)}
		\item{JS (Controller Client)}
		\item{CSS (View)}
		\item{HTML (View)}
	\end{itemize}
	\end{block}
}

\frame{
	\frametitle{Kapselung nach Art der Rückgabe}
	\begin{block}{Endpoints Kapseln die Rückgabe}
	\begin{itemize}
		\item{index.php - Webpages/HTML Rückgabe}
		\item{api.php - JSON-Daten/Steueranweisungen}
		\item{sai.php - Administrative Aufgaben}
		\item{(setup.php - Install Scripts)}
	\end{itemize}
	\end{block}
}

\frame{
	\frametitle{Kapselung nach Sinneinheit}
	\begin{block}{Kapselung nach Sinneinheiten}
	\begin{itemize}
		\item{Ordnerstrukturen ordnen den Code}
		\item{Mudulare Schnittstellen - sai module, (teil)pages}
	\end{itemize}
	\end{block}
	Das PHP-Feature autoload ermöglicht es Klassen bei Bedarf nachzuladen.
}
	
\subsubsection*{REST in System}
\frame{
	\frametitle{REST in System - Where the Magic happens}
	\begin{block}{}
	\begin{itemize}
	\item{Mapping von URL-Parametern auf Funktionsnamen}
	\item{Regeln definiert zulässige Aufrufe}
	\item{Parameter-Typ-Prüfung}
	\end{itemize}
	\end{block}
}

\subsubsection*{Moderne Webtechnologien in System}
\frame{
	\frametitle{Moderne Webtechnologien, von System unterstützt}
	\begin{block}{}
	\begin{itemize}
	\item{Hashbang Crawling-Scheme - \#!address}
	\item{JQuery \& Bootstrap}
	\item{SCSS(SASS), Minify}
	\item{git}
	\end{itemize}
	\end{block}
}

\subsubsection*{Utilities von System}	
\frame{
	\frametitle{Utilities von System}
	\begin{block}{}
	\begin{itemize}
	\item{Simples Template System - \$\{var\} }
	\item{Mask Server Structure - Dateien bereitstellen, Cache}
	\item{Erweiterbare Configuration}
	\item{Cron Job Verarbeitung}
	\item{Rudimentäres Documentations-System}
	\item{Library Schnittstelle - bindet php,js,css}
	\item{Log - Überall, Gekapselt, Zentral verwaltet}
	\item{Security, Nutzerverwaltung}
	\item{Erweiterbares Installations-Script}
	\end{itemize}
	%\includegraphics[width=7.5cm]{img/Azofarbstoffe2.jpg}
	\end{block}
}

\subsubsection*{Modulare GUI für administrative Aufgaben}
\frame{
	\frametitle{System Admin Interface - SAI}					
	\begin{block}{Features von System Admin Inteface}
	\begin{itemize}
	\item{Modular - erweiterbar}
	\item{Log - Alle fangbaren Fehler, die auf der Website auftreten}
	\item{Analysis - Besucher, Logins, Fehler}
	\item{Nutzerverwaltung}
	\item{Text, Cache, Cron, Config, Todo, Git, ...}
  	\end{itemize}
  %\includegraphics[width=6.5cm]{img/Azofarbstoffe.jpg}
	\end{block}
}

\subsection{Vorteile und Nachteile}
\frame{
	\frametitle{Vorteile und Nachteile}					
	\begin{block}{Vorteile bei Einsatz von System}
	\begin{itemize}
	\item{}
  	\end{itemize}
	\end{block}
	\begin{block}{Nachteile bei Einsatz von System}
	\begin{itemize}
	\item{}
  	\end{itemize}
	\end{block}
}

\subsection{Ausblick}
\frame{
	\frametitle{Ausblick - Bootstrap}					
	Bootstrap Grid, Click Click
}
\frame{
	\frametitle{Ausblick - Usermanagement}					
	saml, idps, sps, verwaltung mehrerer Seiten 
}