PHP/JS

Fragebögen

Fragebögen


S. S.
Diese Lernkarten decken fortgeschrittene Themen der Programmierung mit PHP und JavaScript ab, die für Universitätsstudenten relevant sind. Sie konzentrieren sich auf die Handhabung von Variablen, Objekten, Klassen und Funktionen, sowie auf die Integration von Datenbanken und die Verhinderung von SQL-Injection durch Prepared Statements. Die Karteikarten behandeln auch die Verwendung von PDO für Datenbankzugriffe und die Unterschiede zwischen flachem und tiefem Klonen. Programmierer, die ihre Fähigkeiten in der Webentwicklung vertiefen möchten, profitieren von diesen Karteikarten, da sie praktische Beispiele und Best Practices für die sichere und effiziente Codegestaltung bieten.
Cartes-fiches
103
Utilisateurs
1
Langue
Allemand
Catégorie
Informatique
Niveau
Université
Créé / Mis à jour
10.03.2018 / 25.01.2024

Cartes-fiches

Wann wird in PHP mit einem "::" und wann mit einem "->" auf Elemente von KLassen zugegriffen? Erläutern Sie eine dazu gehörende allgemeine Merkregel.

  • :: constante oder static, die Zurodnung existiert vor der Laufzeit
  • -> was mit new() erzeugt wird, während der Laufzeit

Wann wird "this" und wann wird "self" innerhalb von Funktionen in Klassen benutzt?

  • this: Zugriff auf Objekte
  • self: Zugriff auf konstante und statc Attribute

Was bedeutet das Schlüsselwort final vor einem Attribut oder Methode einer PHP-Klasse?

  • so lässt sich ein Überschreiben durch Vererbung verhindern
  • Attribute mit final werden zu Konstanten innerhalb einer Klasse

In welchen Fällen ist die magische Methode _clone() erforderlich? Was wird in dieser dann implementiert?

 

  • wenn man ein Objekt und auch Attribut-Objekte clonen möchte
  • Was im Konstruktor steht soll mit dem Schlüsselwort clone auch in der _clone Methode stehen

Was wird unter einer Wrapper-Klasse (Hüllklasse) verstanden? Wann sollten diese Klassen realisiert und benutzt werden?

 

  • Homogenisierung von Schnittstellen: eine Wrapper-Klasse verdeckt die Schnittstelle einer anderen Klassen zwecks Anpassung oder Vereinheitlichung von Schnittstellen nach außen
  • Dnak Hüllklassen muss sich der Benutzer nicht darum kümmern, ob er z.B MySQL

 

Was leisten Fabrik-Klassen? Wann sind sie sinnvoll?

  • Sie sollen den Aufbau eines Objektes oder eines Geflechtes von Objekten realisieren und verdecken
  • sinnvoll, wenn:
    • beim Aufbau mehrerer Klassen alternativ verwendbar sind, also wenn eine Konfiguration möglich ist
    • der Aufbau vernetzter Objekte komplex ist
    • der Aufbau versteckt werden soll/muss

Müssen Fabric- und Wrapper-Klassen gemeinsam benutz werden?

nein

Skizzieren Sie ein kleines Bsp für den ersten PHP-Zugriff auf eine MySQL-Datenbank. Benutzen Sie dazu das PDO-Objekt

$pdo = new PDO('mysql:host=localhost;dabname=test', 'username', 'password');

Wenn Sie mit PDO auf eine Datenbank erstmalig zugreifen, kannes sei, dass eine Exception geworfen wird. Skizzieren Sie das syntaktisches Schema PHP, wenn Exceptions geworfen werden.

if(xy){

throw new Exception("Value must be 1 or below);

}try{

xy

}catch(Exception $e){

finally{...}

Was bedeutet PDO? Und welchen Sinn hat diese Klasse? Warum sollte PDO statt der Software vom Datenbanken-Hersteller verwendet werden?

  • Portable Data Object: eine Wrapperklasse für Schnittstellen zu Datenbanken
  • die speziellen Eigenschaften der SQL-Dialekte der jeweiligen Sprachen bleiben erhalten
  • Die Schnittstellen zu verschiedenen Datenbanken unterscheiden sich, daher wurde mit PDO eine einheitliche Schnittstelle geschaffen
     

Wie wird mit PDO ein SQL-Statement, das keine Daten aus der Datenbanken an den Aufrufer liefert, an die Datenbanken abgesetzt?

mit exec (execute)

Wie wird mit PDO ein Select-Statement, das Daten an den Aufrufer liefert, an die Datenbank abgesetzt?

mit Query

Mit welcher PDO-Routine kann auf das Ergebnis eines Selects zugegriffen werden? Nennen Sie zwei Möglichkeiten.

  • $data= $db->query($query);
    $rows= $data->fetch();

  • $data= $db->query($query);
    $table= $data->fetchAll();

 

Warum müssen wir vor der Verarbeitung von Formularen immer alle Daten geprüft werden? Beschreiben Sie einen Problemfall.

  • sind alle erforderlichen Felder audgefüllt
  • ist Eingabe wirklich Zahl? ein Name?

Skizzieren Sie das allgemeine Schema bei der Benutzung von Prepared Statements.

  • Query als String vorbereiten
  • Statement = (DB-> Prepare Statement)
  • Parameter setzen
  • Statement ausführen
  • Ergebnisse in Variablen speichern

Worin liegt die Ideen bei den Prepared Statements? Nennen Sie einen Anwendungsfall, bei dem die Benutzung von derartigen Statements einen Vorteil bringt.

  • Prepared Statements = Abfrage muss nur einmal geparst werden
  • Eine Query wird regelmäßig mit anderen Parametern benötigt, so kann Zeit gespart werden

Was wird unter einer SQL-Injection verstanden?

Die Ausnutzung einer Sicherheitslücken in Zusammenhang mit SQL-Datenbanken, die durch mangelnde Maskierung oder Überprüfung von Metazeichen in Benutzereingaben entsteht

Lassen sich mit Prepared Statement SQL-Injection-Angriffe verhindern? Falls ja, woran liegt das?

Ja, da Parameter für Prepared Statements nicht maskiert werden müssen

Sie wollen mit Hilfe von Prepared Statements eine neue Zeilen z.B. in die Tabelle "Adresse" einfügen. Wie sieht das SQL-Insert-Statement aus?

Insert into adress (a,b,c) values(1,2,3);

Es gibt zwei Möglichkeiten die Parameter für ein SQL-Statement bei den Prepared Statements anzugeben. Beschreiben Sie beide.

  • Doppelpunkt, Name (Bennenung)
  • Fragezeichen

Welche der zwei Möglichkeiten die Parameter für ein SQL-Statement bei den Prepared Statements sollten Sie benutzen - und warum?

Doppelpunkte sollten verwendet werden, da Wartung verbessert wird

Wie sieht das syntaktische Schema für Transaktionen bei der Benutzung von PDO aus?

  • beginTransaction()
  • update & execute
  • mit commit() wird abgeschlossen (bzw. rollback())

Sie wollen Ihren Code möglichst wiederverwendbar gestalten; durch welche Konstruktion können Sie anwendungsspezifische Daten, wie z.B. Passwörter für Datenbanken, vom allgemeinen Code trennen?

Auslagern in Datei

Étudier