Angepinnt Allgemeine Tipps & Tricks

      Allgemeine Tipps & Tricks

      Yoa,

      Wenn ihr iwelche nützlichen Tipps/Tricks habt, die vllt nicht jeder kennt, so teilet euer Wissen auf das die Nation gebildet wird :D

      So k, ich fang mal an:
      Sprache: PHP
      Thema: Funktionsdeklaration mit optionalen Parametern.

      Deklaration selbst:

      Quellcode

      1. function MachWas($var1, $var2 = 0)
      2. {
      3. // routine
      4. }


      Beispielaufruf:

      Quellcode

      1. if (irgendwas)
      2. {
      3. MachWas($bspVar, $bspVar2);
      4. }
      5. else
      6. {
      7. MachWas($bspVar);
      8. }


      Erklärung:
      Bei der Deklaration sind 2 Parameter angegeben, wobei einer einen Standardwert zugewiesen bekommen hat.
      Sollte jetzt der 1. Aufruf statt finden, so nehmen die Parameter der Funktion die Werte an, die beim Aufruf übergeben werden. Sprich die Werte von $bspVar und $bspVar2.
      Sollte jedoch der 2. Aufruf statt finden, so wird nur der 1. Parameter der Funktion gesetzt, der 2. nimmt den deklarierten Standardwert an.
      Wichtig: Bei Deklarationen von Funktionen mit optionalen Parametern muss man diese immmer an das Ende der Deklaration setzen, da beim Aufruf sonst die falschen Parameter Werte zugewiesen bekommen.
      MS Paint is powerful


      gizmoh.mybrute.com

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „IronCrusher“ ()

      Sprache: PHP
      Thema: Variable/Unbekannte GET/POST Bezeichner

      Quellcode

      1. // Folgendes ist möglich:
      2. $string= 'Dateiname';
      3. $value = $_POST[$string]
      4. // $value bekommt nun den Wert zugewiesen, der hinter $_POST['Dateiname'] steht


      Hintergrund:
      Sollte man irgendwann mal, warum auch immer, nicht wissen wie die Bezeichner bestimmter Datensätze innerhalb eines Arrays (Bsp. GET oder POST) heißen, sodass man diese Bezeichner im Programmcode gar nicht angeben kann, empfielt es sich mit Variablen zu arbeiten, die den Namen des Bezeichners zugewiesen bekommen. Im Code setzt man dann statt den direkten Namen die Variable an die entsprechende Stelle ($_POST[$string]).
      Woher man nun wissen soll, welchen Wert man dieser Variable zuweisen soll (in diesem Beispiel ist es 'Dateiname'), ist von Situation zu Situation unterschiedlich. Genauer darauf eingehen möchte ich unter "Konkrete Beispielsitation", wer lust dazu hat es sich durchzulesen ^^


      Legende:
      Datensatz - Erklären lässt sich das am besten Anhand eines Beispiels:
      Man stelle sich eine Karteikarte vor, die mehrere Felder zum ausfüllen hat. z. B. "Name", "Vorname", "Adresse" etc.
      Wenn hinter "Vorname" nun steht "Konrad", so wären die Informationen "Vorname" + "Konrad" zusammen ein Datensatz. Während "Vorname" und "Konrad" einzeln Datenfelder darstellen. Und eine Ansammlung von mehreren Datensätzen nennt man dann Datei.
      -
      Bezeichner - Anderes Wort für "Name". Bsp.: $_POST['Dateiname'], hier ist "Dateiname" der Bezeichner eines Datensatzes, hinter dem sich ein Wert befindet. Möglicher Beispielwert in diesem Fall: "Test.txt" - Demnach wäre "Dateiname" der Bezeichner von "Test.txt".
      Man kann auch sagen, dass Bezeichner die Namen von Datensätzen sind. Bezeichner sind gleichzeitig auch eine bestimmte art von Datenfeldern ... und diese art nennt man Bezeichner xD.


      Konkrete Beispielsituation:
      Ich hatte folgendes Problem:
      Man kann auf meiner website einem bestimmten Element Befehle zuweisen. Nennen wir dieses Element "Gerät". Es gibt verschiedene Typen von Befehlen, die eine unterschiedliche Anzahl an Parametern aufweisen. Soweit sogut.
      Konkrete Probleme gibt es jedoch dann, wenn man einen Befehl, der einem Gerät bereits zugewisen wurde, editieren möchte.
      Man erstellt zunächst eine Funktion, die auf der HTML Oberfläche alle nötigen input-felder setzt. D. h. für jeden Parameter 1 input feld. Jedes dieser Input Felder hat einen Bezeichner, der angibt wofür die Information innerhalb des input feldes steht. z. B.:
      <input name="Filename" value="Test.txt">
      Wenn der Benutzer nun auf der Oberfläche alle gewünschten Änderungen vorgenommen hat und das Formular absendet, beginnt das eigentliche Problem: Woher woll ich wissen wie diese übersandten Informationen in dem $_POST Array heißen?
      Klar könnte ich jedem input feld namen geben wie "Parameter1", "Parameter2" usw.. Innerhalb einer schleife, wo ich einen Zähler habe, der hochgezählt wird, kann ich dann problemlos auf jeden Datensatz in $_POST zugreifen, jedoch möchte ich das gerne vermeiden um einen besser verständlichen Code zu erzielen ("Filename" ist aussagekräftiger als "Parameter1"). Zudem könnte es Probleme geben, wenn ich auf eine einzelne Information zugreifen will, denn dann weiß ich nicht wie der Name dieser Information ist, sprich, ist es nun Parameter1, oder Parameter53, Parameter1337 oder wie oder was? Auch kann es vorkommen, dass ich nicht weiß in welcher Reihenfolge meine gewünschte Information sich befindet, demnach kann ich den Zahlenwert hinter "Parameter" auch nicht ermitteln.

      Ich habe das nun wie folgt gelöst:
      Wenn solch ein Formular abgeschickt wird, hole ich erst einmal alle Parameter eines einzelnen Befehles aus der Datenbank. jeder Datenbankeintrag für einen Parameter enthält 2 konkrete Datensätze (abgesehn von "ID"): "Identifier" (= Bezeichner) und "Value".
      Wenn ich nun alle Parameter eines einzelnen Befehles vorliegen habe, greife ich auf die POST Daten folgendermaßen zu:

      Quellcode

      1. // hole alle Parameter eines Befehls
      2. parameterList = $database->GetCommandParameter($commandId)
      3. foreach ($parameterList as $parameter)
      4. {
      5. $value = $_POST[$parameter['Identifier']] // greife auf eigentlichen Wert zu
      6. }


      Hope anybody is going to fucking read this shit!
      MS Paint is powerful


      gizmoh.mybrute.com
      Sprache: -
      Thema: Datenbankrelationen

      Eine Relation ist die Verknüpfung 2er verschiedener Dinge, die miteinander in irgendeiner Form zusammenhängen.
      In der Programmierwelt, insebesondere bei PHP, kommt es oft zum Gebrauch von Relationen verschiedener Tabellen innerhalb einer Datenbank, da dort der Einsatz einer solchen nicht wegzudenken ist.

      Ich möchte das etwas ausführlicher erklären:
      Man nehme eine Datenbank. In dieser Datenbank erstellt man eine Tabelle. Man lege so viele Spalten in dieser Tabelle an, wie man braucht und gibt jeder einen selbst gewählten Namen. Die Spalte "ID" sollte man IMMER, bei jeder Tabelle anlegen. Beschreibung darüber, was eine ID ist, findet man in der Legende.
      Hier ein Beispiel:
      Tabelle "Kunden", Spalten: "ID", "Name", "Vorname" etc.
      Nun hat man darüber hinaus z. B. noch eine Tabelle für alle Firmen, die im Kundenkreis vertreten sind. Sprich eine Tabelle namens "Firma" mit nur 2 Spalten "ID" und "Firmenname".
      Wenn man eine Relation zwischen Kunden und vertretenen Firmen schaffen möchte, legt man eine 3. Tabelle an, z. B. mit dem Namen "Relation_Kunden_Firmen". Diese verfügt über 3 Spalten: "ID", "KundenID" und "FirmenID"
      ID steht für die laufende Nummer jedes Eintrages selbst.
      KundenID steht für die ID des Kunden (bzw. Eintrags) in der Tabelle "Kunden", um den es bei der Relation geht.
      FirmenID steht dabei für die ID der Firma (bzw. des Eintargs) in der Tabelle "Firma", um die es in der Relation geht.
      Wenn man in der Relations-Tabelle nun einen Eintrag vorfindet mit einer Kunden ID und einer Firmen ID, so weiß man, dass dieser Kunde zu dieser Firma gehört.

      Beispiel:
      Tabelle "Kunden"

      Eintrag 1:
      ID: 1
      Name: Mustermann
      Vorname: Max

      Eintrag 2:
      ID: 2
      Name: Müller
      Vorname: Hans

      Eintrag 3:
      ID: 3
      Name: Nguyen
      Vorname: Fero


      Tabelle "Firma"

      Eintrag 1:
      ID: 1
      Firmenname: Musterfirma

      Eintrag 2:
      ID: 2
      Firmenname: Narutomania


      Tabelle "Relation_Kunden_Firma"

      Eintrag 1:
      ID: 1
      KundenID: 3
      FirmenID: 2

      Erklärung:
      KundenID 3 = Fero Nguyen
      FirmenID 2 = Narutomania
      Man weiß also, dass Fero Nguyen zu Narutomania gehört.

      Legende:
      ID - Sie represäntiert eine laufende Nummer, die bei jedem Eintrag, der in die Tabelle gemacht wird, hochgezählt wird. Eine individuelle und einzigartige Nummer also, mit der sich jeder Eintrag indentifizieren lässt. Dies gewährleistet einen gezielten Zugriff auf bestimmte Einträge.
      MS Paint is powerful


      gizmoh.mybrute.com
      Sprache: PHP
      Thema: Erstellen und benutzen von .inc.php (= include) Dateien

      include Dateien werden für unterschiedliche Zwecke eingesetzt.
      Man kann damit entweder Zustände speichern, ähnlich wie man es von .ini Dateien kennt, oder als Bibliothek, die lauter Funktionen enthält, die man dann verwenden kann (z. B. mathematische Funktionen, wie etwa Volumenberechnung von Kreisen, Kugeln, einen gerundeten Wert von Pi etc.).

      Ich möchte erklären, wie eine include Datei aussieht und wie man sie einsetzt bzw. auf sie zugreift.

      1. Schritt - Include Datei erstellen
      Es ist wichtig, dass die Datei mit .php endet, da man sonst bei einem Zugriff auf diese Datei den reinen text auslesen würde, welcher dann im Browser ausgegeben wird, und das wollen wir natürlich nicht.
      so würde eine include Datei Beispielsweise aussehen:

      PHP-Quellcode

      1. <?php
      2. $databaseName = 'test';
      3. $hostName = 'localhost';
      4. $userName = 'root';
      5. $password = '';
      6. ?>


      Diese enthält die Daten, die wir für einen Datenbankzugriff brauchen.
      Sie wird beispielsweise "config.inc.php" genannt.


      2. Schritt - Include Datei einbinden

      Um diese Datei und deren Inhalt nun zu verwenden, müssen wir sie im Programmcode inkludieren.

      PHP-Quellcode

      1. <?php
      2. include "config.inc.php"; // Variante 1
      3. include_once "config.inc.php"; // Variante 2
      4. require "config.inc.php"; // Variante 3
      5. require_once "config.inc.php"; // Variante 4
      6. ?>


      Erläuterung zu den unterschiedlichen Varianten - von Yon:
      Das Script wird bei include nur eine Warnung abgeben, wenn die Datei nicht da ist. Im Wesensgehalt ist require umfassend gleich, jedoch wird es bei einem Fehlerfall das Script abbrechen bzw. nicht auführen (z.b. wenn die datei nicht da ist). Bei den -once befehlen überprüft php ob die datei schon mal included wurde und falls doch, wird er sie nicht nochmal includen

      3. Schritt - Include Datei verwenden

      Nun greifen wir auf den Inhalt der Datei zu

      PHP-Quellcode

      1. <?php
      2. include_once "config.inc.php"; // erst inkludieren
      3. echo $databaseName // Ausgabe: test
      4. ?>



      Wichtig

      Für alle, die Objektorientiert programmieren:
      Es ist wichtig, dass man include Dateien, die u. A. Zustände enthalten (= reine Variablen, keine Funktionen), erst in der eigentlichen Klasse inkludiert, da die Variablen außerhalb der Klasse selbst nicht sichtbar sind (man möge mich eines besseren aufklären, wenn es dafür iwelche keywords gibt, mit denen man auf übergeordnete Variablen zugreifen kann).
      Man könnte natürlich in die include Datei eine klasse mit statischen Variablen einbauen, um darauf auch ohne includes zuzugreifen, aber das ist nicht sinn und Zweck solcher Dateien, das widerstrebt der Anwendungsphilosophie. Solche Dateien werden nämlich meist von Usern selbst per Hand konfiguriert, und die sollen mit so wenig code wie möglich in Berührung kommen.

      So wäre es also falsch:

      PHP-Quellcode

      1. <?php
      2. include_once 'config.inc.php'';
      3. class main
      4. {
      5. private function main()
      6. {
      7. echo $databaseName // Ausgabe: [leer]
      8. }
      9. }
      10. ?>

      Hier würden nämlich alle Variablen überhalb der Klasse erzeugt werden, was dazu fürt, dass man auf diese, soweit ich weiß, nicht zugreifen kann.

      So wäre es korrekt:

      PHP-Quellcode

      1. <?php
      2. class main
      3. {
      4. private function main()
      5. {
      6. include_once 'config.inc.php'';
      7. echo $databaseName // Ausgabe: test
      8. }
      9. }
      10. ?>


      Man muss sich nur merken: Inhalt einer include Datei ist immer dort, wo man sie inkludiert.
      MS Paint is powerful


      gizmoh.mybrute.com

      RE: Allgemeine Tipps & Tricks

      Original von IronCrusher

      So k, ich fang mal an:
      Sprache: PHP
      Thema: Funktionsdeklaration mit optionalen Parametern.

      Das geht auch anders/besser... Angenommen ich will eine Funktion mit unendlich vielen optionalen Parametern füttern oder Parameter uU weiterleiten (man kann (aus Sicherheitsgründen?) nicht direkt weiterleiten sondern muss den Wert erst in einer Variable speichern...)

      PHP-Quellcode

      1. <?php
      2. function foo () {
      3. if (func_num_args() > 0) print_r(func_get_args()); //Array ([0] => "blubb" [1] => "blabb")
      4. echo func_get_arg(0); // blubb
      5. }
      6. foo("blubb", "blabb");
      7. }



      btw. du solltest vllt dazu schreiben, dass du bei deinen Klassen PHP5 Syntax verwendest... (und zugegeben, so bringen deine Klassen nicht wirklich viel^^)