%Teilweise Erzeugt mit dem LaTeX-Generator: http://latex.sehnot.de

%Schriftgröße, Layout, Papierformat, Art des Dokumentes
\documentclass[10pt,oneside,a4paper]{scrartcl}

%Einstellungen der Seitenränder
\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=1.5cm,includeheadfoot]{geometry}

%neue Rechtschreibung
\usepackage[ngerman]{babel}

%Umlaute ermöglichen
\usepackage[utf8]{inputenc}

%Gesamtseitenzahl
\usepackage{lastpage}

% Kopf- und Fußzeile
\usepackage[automark]{scrpage2}

%Quellcode-Listings
\usepackage{listings}

%Hyperlinks
\usepackage{hyperref}

%Spalten
\usepackage{multicol}

%Kopfzeile
\ihead{PHP}
\chead{}
\ohead{http://kohnlehome.de/php/php-zusammenfassung.pdf}
\setheadsepline{0.5pt}

%Fußzeile
\setfootsepline{0.5pt}
\ifoot{Franz Kohnle}
\cfoot{Seite \thepage\ von  \pageref{LastPage}}
\ofoot{\today}

\pagestyle{scrheadings}

\begin{document}

% Überschrift 
\begin{center}
\LARGE % Schriftgröße
\bfseries % Fettdruck
\sffamily % Serifenlose Schrift
PHP-Zusammenfassung
\end{center}


\section{Quellcode}
\begin{multicols}{3}
\subsection*{Einbinden in HTML}
\begin{verbatim}
<?php ... ?>
\end{verbatim}

\columnbreak

\subsection*{Kommentare}
\begin{verbatim}
// ...
/* ... */
\end{verbatim}

\columnbreak

\subsection*{Textausgabe}
\begin{verbatim}echo "Text";
\end{verbatim}

\end{multicols}


\section{Variablen, Operatoren, Zufallszahlen}
\subsection*{Variablen}
\begin{multicols}{3}
\subsubsection*{Wertzuweisung}
\begin{verbatim}
$ganzzahl = 2;
$kommazahl = 2.3;
$text = 'Text';
$text = "Text";
$wahr = false;
\end{verbatim}

\columnbreak

\subsubsection*{Wert auslesen}
\begin{verbatim}
... = $variable;
\end{verbatim}

\columnbreak

\subsubsection*{Informationen zur Variablen}
\begin{verbatim}
var_dump($variable);
\end{verbatim}
\end{multicols}


\subsection*{Operatoren}
\begin{multicols}{3}
\subsubsection*{arithmetisch}
\begin{verbatim}
+ - * / %
\end{verbatim}

\columnbreak

\subsubsection*{Zuweisung}
\begin{verbatim}
= += -= *= /= %= .=
\end{verbatim}

\columnbreak

\subsubsection*{Inkrement, Dekrement}
\begin{verbatim}
++ --
\end{verbatim}
\end{multicols}

\begin{multicols}{3}
\subsubsection*{Vergleich}
\begin{verbatim}
< <= > >= == !=
\end{verbatim}

\columnbreak

\subsubsection*{logisch}
\begin{verbatim}
and && or || xor !
\end{verbatim}

\columnbreak

\subsubsection*{Textverkettung}
\begin{verbatim}
"Text" . $text
\end{verbatim}
\end{multicols}

\subsection*{Zufallszahlen}
\begin{verbatim}
$zufall = rand($min, $max);
\end{verbatim}



\section{Arrays}
\subsection*{Deklaration und Definition}
\begin{verbatim}
$feld_klassisch = array(wert1, wert2, wert3);
$feld_assoziativ = array(schluessel1=>wert1, schluessel2=>wert2, schluessel3=>wert3);
\end{verbatim}
Schluessel: Integer oder String, Werte: beliebig

\subsection*{Zugriff}
\begin{verbatim}
$feld_klassisch[0], $feld_klassisch[1], $feld_klassisch[2]
$feld_assoziativ[schluessel1], $feld_assoziativ[schluessel2], $feld_assoziativ[schluessel3]
\end{verbatim}

\subsection*{Ausgabe}
\begin{verbatim}
var_dump($feld); // Gibt Inhalt des Arrays $feld als Text aus
\end{verbatim}

\newpage

\section{Kontrollstrukturen}
\subsection*{Verzweigungen}
\begin{multicols}{2}
\subsubsection*{if}
\begin{verbatim}
if(bedingung1){
    ...
} elseif(bedingung2){
    ...
} else {
    ...
}
\end{verbatim}

\columnbreak

\subsubsection*{switch}
\begin{verbatim}
switch($variable){
    case wert1:
        ...
        break;
    case wert2:
        ...
        break;
    default:
        ...
}
\end{verbatim}
\end{multicols}

\subsection*{Schleifen}
\begin{multicols}{2}
\subsubsection*{do}
\begin{verbatim}
do{
    ...
}while(bedingung);  
\end{verbatim}

\columnbreak

\subsubsection*{while}
\begin{verbatim}
while(bedingung){
    ...
}  
\end{verbatim}
\end{multicols}

\begin{multicols}{2}
\subsubsection*{for}
\begin{verbatim}
for($i=0; $i<5; $i++){
    ...
}  
\end{verbatim}

\columnbreak

\subsubsection*{foreach}
\begin{verbatim}
foreach($feld as $wert){
    ... $wert;
}  

foreach($feld as $schluessel => $wert){
    ... $schluessel;
    ... $wert;
}  
\end{verbatim}
\end{multicols}


\section{Funktionen}
\begin{multicols}{2}
\subsection*{Definition}
\begin{verbatim}
function name($par1, $par2){
    ...
    return $rueck;
}  
\end{verbatim}

\columnbreak

\subsection*{Aufruf}
\begin{verbatim}
$rueck = name($arg1, $arg2);  
\end{verbatim}
\end{multicols}

\newpage

\section{Klassen und Objekte}
\subsection*{Klassendefinition}
\begin{verbatim}
class Klasse {
    private $eigenschaft;
    private static $klassenvariable = 23;
    
    public function __construct($eigenschaft) {
        $this->setEigenschaft($eigenschaft);
    }

    public function setEigenschaft($eigenschaft) {
        $this->eigenschaft = $eigenschaft;
    }

    public function getEigenschaft() {
        return $this->eigenschaft;
    }
    
    public static function getKlassenvariable(){
        return self::$klassenvariable;
    }
}
\end{verbatim}

\subsection*{Instanzen, Zugriff auf Methoden}
\begin{verbatim}
$instanz = new Klasse(123);
$zahl =  $instanz->getEigenschaft();
$zahl2 = Klasse::getKlassenvariable();
\end{verbatim}

\subsection*{Vererbung}
\begin{verbatim}
class SubKlasse extends Klasse{
    public function __construct($eigenschaft) {
        parent::__construct($eigenschaft);
    }
}
\end{verbatim}

\subsection*{Abstrakte Klassen}
\begin{verbatim}
abstract class AbstrakteKlasse{
    
}
\end{verbatim}

\subsection*{Schnittstellenklassen}
\begin{verbatim}
interface Schnittstelle{
    public function methode();
}

class Beispiel implements Schnittstelle{
    public function methode() {
        // ...
    }
}
\end{verbatim}


\section{PHP auf dem Webserver}
\subsection*{Vordefinierte Funktionen}
\begin{verbatim}
phpinfo();       // Gibt PHP-Konfiguration in HTML-Form aus
\end{verbatim}

\subsection*{Superglobale Variablen}
\begin{verbatim}
$_GLOBALS
$_SERVER
$_GET
$_POST
$_COOKIES
$_FILES
\end{verbatim}

\subsection*{Kommunikation Client - Server}
\subsubsection*{HTTP-GET}
\paragraph{HTML-Formular}
\begin{verbatim}
<form action="datei.php">
    <input type="text" name="schluessel1" />
    <input type="text" name="schluessel2" />
    <input type="submit" value="OK" />
</form>  
\end{verbatim}
\paragraph{URL}
\begin{verbatim}
http://datei.php?schluessel1=wert1&schluessel2=wert2
\end{verbatim}
\paragraph{datei.php}
\begin{verbatim}
$_GET["schluessel1"], $_GET["schluessel2"]
\end{verbatim}

\subsubsection*{HTTP-POST}
\paragraph{HTML-Formular}
\begin{verbatim}
<form action="datei.php" method="post">
    <input type="text" name="schluessel1" />
    <input type="text" name="schluessel2" />
    <input type="submit" value="OK" />
</form>  
\end{verbatim}
\paragraph{URL}
\begin{verbatim}
http://datei.php
\end{verbatim}
\paragraph{datei.php}
\begin{verbatim}
$_POST["schluessel1"], $_POST["schluessel2"]
\end{verbatim}

\end{document}
