Dokumentation

PHP

Übung 1

Voraussetzungen

  • Aufbau von Klassen
  • Namenskonventionen
  • Umgang mit Konstruktoren
  • Umgang mit Arrays
  • Verwenden einseitiger Kontrollstrukturen

Aufgabenstellung

  1. Erstellen Sie die Klasse Form
  2. Mit Instantiierung des Form-Objekts soll einem `$data`-Attribut die PHP-Konstante (array) ``$_POST`` zugewiesen werden (constructor).
  3. Die Klasse soll über einen Getter verfügen, mit dem der Wert (string) eines bestimmten Schlüssels von ``$_POST`` zurückgegeben werden kann. 4. Speichere die Datei entsprechend PSR-0 unter ``src/Form.php``. Kurze Erinnerung zu Arrays und Verwendung einer einseitigen Kontrollstruktur: ````php

// mit isset($element) prüfen, ob ein bestimmter Schlüssel existiert. if( isset($myArray[$key]) ) { $myString = $myArray[$key]; // der Variable $myString den Wert aus dem Array zuweisen } ```` ### ClientCode Die erstellte Klasse ``Form`` soll beispielsweise in folgenden ClientCode eingearbeitet werden. ````php

$myForm = new Form(); $myUsername = $myForm->getField('username'); echo "Der Benutzername lautet: $myUsername"; // Ausgabe: Der Benutzername lautet: Ingo


### Tipps und Hinweise

Nutzt alle verfügbaren Ressourcen wie die Dokumentationen über
[Arrays](https://www.php.net/manual/de/language.types.array.php),
[Kontrollstrukturen](https://www.php.net/manual/de/control-structures.if.php) und
[isset()](https://www.php.net/manual/de/function.isset.php)
oder euer gemeinsames Wissen. Im schlimmsten Fall erarbeiten wir die Lösung in der nächsten
Stunde zusammen.

Wir werden die ``Form``-Klasse dann für unsere ersten richtigen Formularabfragen nutzen.

## Übung 2

Algorithmen lassen sich übersichtlich in Flussdiagrammen (Ablaufdiagramme) darstellen.
Im Folgenden ist eine zweiseitige Kontrollstruktur (``if-else``) dargestellt:

![Flowchart](/docs/img/flowchart_01.png)

### Aufgaben

1. Zeichne zur besseren Übersicht einen Ablaufplan des Programms.
2. Markiere die zueinander gehörenden Klammerpaare jeweils farbig.
3. Bestimme die Werte, die für die variablen ``$_POST`` zurückgegeben werden kann.
4. Speichere die Datei entsprechend PSR-0 unter ``src/Form.php``.

Kurze Erinnerung zu Arrays und Verwendung einer einseitigen Kontrollstruktur:
````php
a b c d e
$myArray[] = $4 $myArray[] = $5 $myArray[] = $6 $myArray[] = $7 $myArray[] = $8
$myArray[] = $9 $value geben $0 $value geben $1 $value geben $2 $value geben $3
$value geben $4 $value geben $5 $value geben $6 $value geben $7 $value geben $8
$value geben $9 $element) prüfen, ob ein bestimmter Schlüssel existiert. if( isset($0 $element) prüfen, ob ein bestimmter Schlüssel existiert. if( isset($1 $element) prüfen, ob ein bestimmter Schlüssel existiert. if( isset($2 $element) prüfen, ob ein bestimmter Schlüssel existiert. if( isset($3

Ablaufdiagramm Musterlösung

Musterloesung

Übung 3

Ermittle die Ausgabe folgenden Programms.

<?php
$element) prüfen, ob ein bestimmter Schlüssel existiert.
if( isset($4b = 3;
$element) prüfen, ob ein bestimmter Schlüssel existiert.
if( isset($5a, $element) prüfen, ob ein bestimmter Schlüssel existiert.
if( isset($6c) {
    $element) prüfen, ob ein bestimmter Schlüssel existiert.
if( isset($7a == $element) prüfen, ob ein bestimmter Schlüssel existiert.
if( isset($8b > 2)
        $element) prüfen, ob ein bestimmter Schlüssel existiert.
if( isset($9a < 5 and $key]) ) {
    $0string .= "Du ";
    if($key]) ) {
    $1b == 2)
        $key]) ) {
    $2c != 6 and $key]) ) {
    $3string .= "hast ";
        else
            $key]) ) {
    $4b == 3 and $key]) ) {
    $5string .= "viel ";
    if($key]) ) {
    $6b == 2)
        $key]) ) {
    $7a < 5 and $key]) ) {
    $8string .= "Spaß! ";
}

printText($key]) ) {
    $9b,$myArray[$0_SESSION`` genutzt. Hier können Werte abgelegt
werden, die während der aktuellen Browser-Sitzung erhalten bleiben.

- Analysiere den folgenden Quellcode und erstelle ein Ablaufdiagramm.

````php
<?php

class AuthenticationController extends AbstractController
{

    public function login(): string
    {
        if($myArray[$1this->response->redirectToRoute(302,'app_index');

        $myArray[$2this->request->isFormSubmitted() and $myArray[$3encryptionService = new EncryptionService();

            $myArray[$4encryptionService->encryptString($myArray[$5this->request->getFieldAsString('password')
            ];

            if($myArray[$6loginData['password']) {
                if (0 === ($myArray[$7this->repository, $myArray[$8user = $myArray[$9loginData['username']]);
                    if ($myString den Wert aus dem Array zuweisen
}
````


### ClientCode

Die erstellte Klasse ``Form`` soll beispielsweise in folgenden ClientCode eingearbeitet werden.

````php

Übung 5 - Login-Formular

Überprüfen, ob Client eingeloggt ist oder nicht.

formularAnzeigen

Überprüfen, ob Logout angefordert wurde.

logout

Überprüfen, ob Login erfolgreich.

login

Mitglied in