münster-webdesign.net

Archiv für die Kategorie ‘PHP’

JavaScript: unterminated string literal error

Mittwoch, 25. November 2009

JavaScript gibt sich recht unkooperativ, wenn Strings Zeilenumbrüche enthalten. In der JavaScript-Fehlerkonsole gibt’s dann meist ein Error: “unterminated string literal”.

Sofern JavaScript-Code dynamisch per PHP erzeugt werden soll, ist man also gut beraten, vorher etwaige Zeilenumbrüche zu entfernen. Recht komfortabel gelingt das mit der PHP-Funktion “preg_replace()”. Ein entsprechender Beispiel-Code, der alle Zeilenumbrüche aus einem String entfernt, könnte beispielsweise wie folgt aussehen:

$string = preg_replace(‘/\n|\r\n|\r/’,”,$string);

“Call-time pass-by-reference”-Bugfix für Typo3-Extension danp_tagcloud

Samstag, 14. November 2009

Die Version 1.0.1 der Typo3-Extension “Tagclouds for all tables (TIMTAB)” (EXT: danp_tagcloud) erzeugt unter aktuellen PHP-Versionen (5.2.10) – je nach Konfiguration der “error_reporting”-Direktive von PHP – eine Warning-Meldung:

Warning: Call-time pass-by-reference has been deprecated – [...]

Um dem Spuk ein Ende zu bereiten, genügt es, in Zeile 50 des PHP-Skripts “class.tx_danptagcloud_pi1.php” das “&”-Zeichen zu entfernen. Die korrekte Zeile sieht dann wie folgt aus:

$helper->initGeneral($this);

Zend Debugger für PHP 5.3 nur noch für “non-thread-safe”-Architektur

Mittwoch, 09. September 2009

Bei der Aktualisierung unserer XAMPP-Entwicklungsumgebung auf PHP 5.3 haben wir mit einigem Erstaunen festgestellt, dass Zend Technologies beim hauseigenen Zend Debugger offensichtich die Unterstützung für “thread-safe”-Architekturen still und heimlich gestrichen hat.

Insbesondere für Entwickler und Programmierer, die – wie wir – unter der aktuellen “XAMPP für Windows”-Version 1.7.2 entwickeln, ist das wenig erfreulich, da PHP hier “thread-safe” kompiliert ist und das Laden beziehungsweise Ausführen des Zend Debuggers scheitert. Dementsprechend ist an Remote-Debugging mit dem Zend Debugger in dieser Konstellation nicht zu denken.

XDebug als Debugger unter Zend Studio

XDebug als Debugger unter Zend Studio

Als Debugger-Alternative bietet sich Xdebug an. Bleibt nur der ungleich höhere Implementierungsaufwand. Zudem gilt es zu tricksen, damit XDebug überhaupt als alternativer Debugger im “Preferences”-Menü unter Zend Studio im Einstellungszweig “PHP/Debug” zur Auswahl steht: Dazu gilt es, alle Dateien und Verzeichnisse, die im Plugin-Verzeichnis der IDE liegen und mit “com.zend.php.debug [...]” beginnen, zu “verstecken” beziehungsweise in ein passendes Unterverzeichnis zu verschieben.

PHP-Shell-Skripte mittels Eingabeaufforderung unter XAMPP für Windows ausführen

Donnerstag, 27. August 2009

Häufig ist es erforderlich, PHP-Shell-Skripte, die beispielsweise später regelmäßig per Cronjob ausgeführt werden sollen, während der Entwicklung zu testen. Sofern die Entwicklung auf einem XAMPP-System unter Windows stattfindet, lassen sich .phpsh-Skripte mit folgendem Aufruf aus dem entsprechenden Verzeichnis heraus ([...]\xampp\php) ausführen:

php.exe -f [Pfad/Dateiname]

Eine Übersicht über alle unterstützten Kommandos liefert der Befehl php.exe -h.

PHP: Mit Setter- und Getter-Methoden arbeiten

Dienstag, 24. März 2009

In der Praxis hat es sich als überaus hilfreich erwiesen, auf Eigenschaften nicht direkt zu zugreifen, sondern diese über entsprechende Setter- und Getter-Methoden anzusprechen.

Die Vorteile liegen auf der Hand: Setter- und Getter-Methoden ermöglichen es Ihnen, die Werte der Eigenschaften vor dem Setzen auf Gültigkeit zu überprüfen und die Namen der Eigenschaften zu verstecken.

In Kombination mit der Deklarierung von Eigenschaften als “private” respektive “protected” ist so in jedem Fall sichergestellt, dass ein Zugriff “von außen”, also außerhalb der Klassendefinition, nur noch über die Setter- und Getter-Methoden erfolgen kann.

Um nicht für jede Eigenschaft separate Setter- und Getter-Methoden entwickeln zu müssen, emfpiehlt sich ein allgemeiner Ansatz (hier für die Setter-Methode und zwei Eigenschaften, wobei diese dann als “protected” oder “private” deklariert werden können):

public function set($eigenschaft, $wert)
{
switch ($eigenschaft, $wert)
{
case ‘eigenschaft1′ : $this->eigenschaft1 = $wert;
return true;
break;
case ‘eigenschaft2′ : $this->eigenschaft2 = $wert;
return true;
break;
}
}

PHP-Programmierung: Auch eine Frage der Namensgebung

Mittwoch, 18. März 2009

Das A und O bei der Umsetzung größerer PHP-Projekte ist eine schlüssige Namensgebung bei Variablen, Funktionen, Klassen und Methoden. Aus der Praxis haben sich für uns folgende Namensschemata bewährt:

Abkürzungen: Ein recht probates Mittel, um Bezeichnungen abzukürzen ist zunächst das Streichen aller Vokale. Von den verbleibenden Konsonante steichen Sie anschließend noch alle heraus, die doppelt vorkommen oder nicht betont werden.

Konstanten: Für Konstanten haben sich Bezeichnungen in Großbuchstaben durchgesetzt.

Variablen: Variablen sollten komplett in Kleinbuchstaben geschrieben werden. Um den Überblick zu wahren, empfiehlt es sich, zusätzlich den Typ der Variablen als Kürzel in Form eines Einzelbuchstabens voranszustellen, also  beispielsweise “g_” für globale, “r_” für referenzierte sowie “s_” für statische Variablen.

(weiterlesen…)