Archiv für April, 2007

IPC 2012 Spring Edition

Continue und Break

Sehr häufig hat man Schleifen und möchte aber mit dieser Schleife nur einen Fakt feststellen, der möglicherweise gar nicht das Durchlaufen aller Array-Einträge benötigt. Wenn man beispielsweise ein Array mit lauter natürlicher Zahlen hat und überprüfen möchte, ob die Summe aller Zahlen über einem bestimmten Wert liegen. Bei einer solchen Aufgabe kann die Schleife ja abgebrochen werden, wenn der bestimmte Wert überschritten wurde (man beachte, dass es sich um natürliche Zahlen handelt, die nicht negativ sein können). Leider fällt mir kein praxisnäheres Beispiel ein, aber es gibt sicherlich auch in ihrer Anwendung Schleifen, auf die das angewendet werden kann. Weiterlesen >

Schlagwörter: , , , , ,

Switch-case richtig anordnen

Oft wird das switch-case-Konstrukt beim Programmieren verwendet, um größere if-Aneinanderreihungen zu vermeiden. Und das ist auch gut so :-)
Die einzelnen Fälle (cases), die vom switch-Block behandelt werden, solten dabei aber nicht per Zufall oder so wie es gerade in den Sinn kommt angeordnet werden, sondern in der Reihenfolge der Eintrittswahrscheinlichkeiten. Der Fall, der wahrscheinlich am häufigsten auftritt, sollte an erster Stelle stehen – der, der fast nie auftritt an letzter Stelle. Weiterlesen >


Ausgaben in Cache speichern

Viele auf PHP basierende Projekte generieren mit einer PHP-Datei viele Ausgabe-Seiten. Sei es in einem Onlineshop, in denen auf der Detailseite die Daten aus einer Datenbank geholt und vom Script an die richtige Stelle platziert werden oder ein Blog, bei dem im Prinzip genau das gleiche passiert: Eine Datei wird mit einem eindeutigen Parameter aufgerufen und über diesen Parameter können aus der Datenbank die nötigen Inhalte geladen und präsentiert werden. Die fertig zusammengebaute Seite wird dann zurück an den Client geschickt.
Wenn man nun Seiten hat, die sich recht selten ändern (beispielsweise die Detailseite eines bestimmten Artikels in einem Shop), wäre es ja nun möglich die einmal erzeugte Ausgabe als HTML-Datei zu speichern, damit beim nächsten Aufruf die Seite nicht wieder umständlich zusammengebaut werden muss, sondern einfach nur die HTML-Datei geladen werden muss. Und genau das nennt ist Caching. Weiterlesen >

Schlagwörter: , , ,

Dateien einlesen

Eine sehr häufig benutzte Funktion ist es Dateien einzulesen. Das kommt zum Beispiel bei kleineren Anwendungen vor, wo die Daten nicht in eine Datenbank geschrieben werden oder auch wenn eine Datenbank zu viel Aufwand wäre für diese kleinen Datenmengen. Ein viel wichtigeres Anwendungsgebiet ist das Caching. Dabei wird die Ausgabe von PHP-Scripts, die sicht nicht oft ändert, in eine statische HTML-Datei gespeichert und kann dann recht schnell aufgerufen werden. Wie schnell, das hängt von der Funktion ab, mit der man die abgespeicherte Datei einliest – und darum solls hier gehen. Weiterlesen >

Schlagwörter: , , ,

Pufferung von Ausgaben

Um jedes Quentchen Leistung aus einer Anwendung zu holen, versuchen Entwickler großer Seiten die Ausgaben zu puffern. Ds bedeutet, dass nicht alle Ausgabe-Befehle dort ausgeführt werden, wo sie stehen, sondern erst, wenn der Puffer geleert wird. Man sammelt sozusagen alle Ausgaben und gibt sie dann in einem Rutsch aus.

Das System der Pufferung kann man auf (mindestens) zwei Arten lösen: Entweder man schreibt alle Ausgaben in einen String (konkateniert die neue Ausgabe mit der bisher bereits bis zu dieser Zeile vorliegenden) oder man verwendet den internen Puffer von PHP. Weiterlesen >

Schlagwörter: , , , ,

Funktionsaufruf per Referenz

In den meisten PHP-Anwendung gibt es Funktionen (oder bei OOP Methoden). Diese können Parameter als Eingabewerte empfangen. Nun gibt es – wie in den meisten Programmiersprachen – in PHP den Aufruf per call-by-value und call-by-reference. Der Unterschied ist, dass bei call-by-value das zu übergebende Objekt ausgelesen und in eine neue (lokale) Variable gespeichert wird, mit der dann innerhalb der Funktion gearbeitet werden kann.
Bei call-by-reference wird nicht der Inhalt übergeben sondern lediglich ein Zeiger auf eine bestimmte Variable. Das spart jede Menge Speicherplatz, da die Daten nur einmal im Speicher sein müssen, während die gleichen Daten bei call-by-value sowohl in der übergebenen Variable als auch in der lokalen Variable in der Funktion stehen. Weiterlesen >

Schlagwörter: , , , , , ,