A friend of mine visited me at home last sunday. While talking about various topics he inspired me for a small WordPress plugin. I’ve never wrote any plugin for my blog, but I made few themes for it so I’ve got an idea of WordPress’ capabilities. On bueltge.de I found an easy step by step tutorial for plugin beginners like me. Additionally I read few articles about WordPress’ plugin API in the codex.
Now I’ve to reactivate my basic PHP skills – they aren’t very sophisticated
Besides commonly used tools like an apache webserver with PHP and MySQL support, I write my sources with Komodo Edit, which assists you with syntax highlightning for a vast range of languages and code completition. Komodo Edit will become my favourite editor for writing Python and / or PHP source code.
For your information, I finished coding my first plugin. After main development I play around with it or try to create a fancier one.
Archive for the 'PHP' Category
Ich hänge momentan an einem ziemlich – aus meiner Sicht – absurden Problem. Ich habe ein PHP-Skript erstellt, das zu einem Datenbankfrontent gehört. An sich funktioniert dieses Skript auch – es gibt keine Syntaxfehler oder sowas.
Es lief auch alles ganz fein bis ich das ganze mal auf einem Rechner mit Windows Vista Business und XAMPP 1.7.2 ausprobierte. Dann funktioniert in einer einzigen Datei (namens command.php) der Aufruf von header(“Location: index.php”) überhaupt nicht mehr, während dieser Aufruf allerdings in meinen anderen PHP-Dateien einwandfrei ausgeführt wird. Vorher lief das Ganze auf einem Linux System. Da ich das ganze nocheinmal nachkontrollieren wollte, habe ich schnell meinen virtuellen Ubuntu-Server hergenommen und genau die selbe Version (nur für Linux eben) installiert und es läuft ALLES!
Bei Windows währenddessen geht alles bis jener Aufruf in der command.php. Ich weiß nicht, was da falsch sein soll. Mittlerweile habe ich den Inhalt dieser Datei auf diesen einzigen Aufruf reduziert, nur um alle anderen Fehlerquellen durch anderen Code in dieser Datei auszuschließen. Ergebnis ist das selbe: es geht nicht!
Langsam bin ich am verzweifeln, weil ich nicht mehr weiter weiß und mir das Ganze mittlerweile aus dem Hals heraushängt.
Den selben Test habe ich noch einmal auch auf einem Windows XP Professional durchgeturnt mit genau dem selben Effekt wie bei Vista. Ähnlichen Effekt lässt sich auch auf Linux erzielen, wenn man statts den XAMPP sich das Apache-Packet z.B. von Ubuntu installiert, was zum Beispiel automatisch bei der Server Variante geschieht, wenn man die Option LAMP-Server wählt. Da läuft dieses Skript auch nicht.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | /** @file form-chooser.php : Weiterleitungen auf andere Formulare Dieses Script leitet vom Formular @file add-device.php auf nachfolgende Formulare um, je nach Geraetetyp */ switch ($_POST['devtype'] ) { case "phone": { header("301 Moved Permanently"); header("Location: index.php?action=phone-form"); break; } case "computer" : { header("301 Moved Permanently"); header("Location: index.php?action=computer-form"); break; } case "printer": { header("301 Moved Permanently"); header("Location: index.php?action=printer-form"); break; } default: { header("301 Moved Permanently"); header("Location: index.php?action=error"); break; } } |
Dieser gezeigte Code geht, wenn man ihn über den Klick auf einen Button eines vorhergehenden Formulars aktiviert.
Der Code in der command.php hat eine ähnliche Struktur bzw. er befindet sich ebenfalls in einem switch-case-Konstrukt. Zu Test Zwecken habe ich den Code in der command.php auf folgendes reduziert:
header("Location: index.php);
Auch die Angabe des vollen Pfades bringt hier nichts.
Und genau dieser Umstand lässt das Ganze so absurd erscheinen. Ich persönlich weiß nicht, woran es noch liegen könnte. Ich habe schon folgende Punkte ausgeschlossen:
- Berechtigungen unter Vista: Kann nicht sein unter XP läufts ja ebenfalls nicht.
- Fehlende PHP-Bibliothek: Kann nicht sein, da header() praktisch zum Standard-Umfang gehört. Und zweitens funktioniert der Aufruf in anderen meiner Skripte auch.
- Falsche Einstellungen am XAMPP vorgenommen: Ich fasse bei XAMPP keine Config-Files an.
- Unterschiede in den XAMPP-Versionen: Ich habe auf allen Testsystemen ein und die selbe Version 1.7.2 installiert.
Seit einer Weile bin ich mit der Erweiterung meiner selbst geschriebenen PHP Anwendung beschäftigt. Schließlich brauche ich ein paar Features zum Bearbeiten und Löschen vorhandener Datensätze, die ich mir aus einer MySQL Datenbank hole. Abfragen, Hinzufügen und Löschen von Datensätzen funktioniert mittlerweile zufriedenstellend.
Allerdings war der Weg dahin zum Teil nicht ganz so einfach. Man fügt ein neues Feature, eine neue Funktion ein und stellt plötzlich fest, dass etwas nicht “tut, wie es soll”. Wenn ein Blick in den Code nicht hilft, werfe ich bei C und Java gerne mal den Debugger an. Dann sieht man so manche Variablenbelegung oder man kann sehen, wie das Programm tatsächlich ausgeführt wird.
In PHP allerdings vermisse ich so etwas. Dort behelfe ich mir momentan mit Funktionsaufrufe wie var_dump() und printf() im üblichen “Edit-Run-Test”-Zyklus. Das macht mitunter nicht wirklich viel Spaß, wenn man einem Fehler auf den Grund gehen möchte.
Meine PHP-Entwicklung betreibe ich momentan unter Linux mt XAMPP als Webserver und Quanta+ 3.5 als Editor für PHP. Quanta+ ist für PHP ein etwas besserer Editor mit einer einfachgehaltenen Codeergänzung beim Tippen – aber auch nicht mehr. Als andere Alternative würde mir hier Eclipse einfallen, wenn es mittlerweile in neuerer Version nicht allzu speicherhungrig wäre. Auf meinem Läppi mit 512 MB Ram würde das nach einer Weile zu Abstürzen führen, sowie ich das aus meiner Eclipse-User-Zeit her kenne.
Aus Ermangelung einer besseren Alternative, wird das Spiel von Edit-Run-Test noch so eine Weile weiter gehen.
Seit knapp drei Tagen bin ich nach langer Abstinenz in PHP unterwegs. Allerdings steht kein Projekt für WordPress (z.B. eine neue Theme) an. Davon bin ich zur Zeit weit entfernt, denn dazu brauche ich etwas Inspiration und Muse.
Viel mehr bastle ich momentan an einer Art datenbankgestütztes Verwaltungssystem, in dem man Dinge eintragen bzw. entfernen kann, ohne dass man selbst Hand an die Datenbank anlegen kann. Auch generierbare Übersichten über Bestände dürfen da natürlich auch nicht fehlen – schließlich will man ab und zu wissen, was sich da so alles in der Datenbank tummelt.
Da ich nicht ständig Zeugs in PHP schreibe, muss ich da hin und wieder öfters in eine Funktionsrefernenz schauen. Das kommt halt davon, dass ich ein-, zweimal im Jahr ein neues Design für den Blog erstelle. Und wenn das erstellt ist und vernünftig in Internet Explorer, Firefox, Opera und Konqueror aussieht, motte ich meine PHP-Kenntnisse wieder ein.
Allerdings ist das Verwaltungssystem nicht für meinen Hausgebrauch gedacht, sondern so etwas wie eine Auftragsarbeit von jemanden aus meinem Bekanntenkreis.
Alle, die es schon mal ausprobiert haben, wissen, dass das abonnieren meines Blogs mittels RSS nicht funktioniert, Eine Lösungsmöglichkeit des Problems ist mir schon seit geraumer Zeit bekannt und ich habe auch seit gestern damit begonnen das Ganze in PHP umzusetzen.
Bequem wäre es, wenn ich vorhandene WordPress-Funktionen nutzen könnte, denn dann müsste ich nur einen kleinen Teil programmieren und ein funktionierendes RSS Feed würde schneller zur Verfügung stehen.
Unglücklicherweise muss der Aufruf besagter Funktionen in der sogenannten WordPress-Loop geschehen, da diese sonst dem PHP-Interpreter vollkommen unbekannt sind. Momentan sieht es so aus, dass ich ein Haufen Code mittels
<?php include("Foo.php");>
einbinden darf, damit es läuft. Andere Alternative wäre, den nötigen Code selbst schreiben, was ich aber für kompletten Quatsch mit Soße halte, da ja die Funktionalität z.b. des Beitragstitelholens doppelt vorhanden wäre.
Wenn ich nur wüsste, ob man jede PHP-Datei einzeln includieren muss oder ob man das wie in Java
import javax.swing.*;
abkürzen kann.
Ich hab seit längerer Zeit hier nichts von mir hören lassen
.
Nun, das liegt daran, dass ich intensiv an einer neuen WordPress Theme arbeite. Das CSS für die Gestaltung ist schon fertig und auch ein paar der benötigten PHP Skripte zum Generieren der Seiteninhalte sind komplett.
Dennoch fehlen mir noch einige Zeilen, z.B. für die Darstellung der Beitragskommentare.



