Archive for the ‘PHP’ Category

h1

„underscored to camelCase“-Hack

Februar 21, 2009

Charly und ich müssen auf Arbeit gerade alten Code nach einigen Qualitätsstandarts überarbeiten. Dabei gilt auch, dass nun nur noch die camelCase-Methode verwendet wird. Bisher wurden aber sehr häufig Variablen nach der underscore-Methode benannt. Jetzt jede einzelne Variable im Editor zu ersetzen, wäre bei über 120 Dateien recht aufwändig geworden. Deswegen folgender Perl-Einzeiler:

perl -pi -e ’s/\$([\w]+?)_([\w]+)([\W])/\$$1\u$2$3/g‘ `find . -name „*.php“`

Das sucht alle PHP-Variablennamen, die einen Unterstrich enthalten, löscht den Unterstrich und ersetzt den darauf folgenden Buchstaben, mit dem gleichen Großbuchstaben. Sind in manchen Variablennamen mehrere Unterstriche vorhanden, so muss man den Befehl mehrmals ausführen, weil immer nur ein Unterstrich pro Aufruf pro Variablenname ersetzt wird.

h1

Kochbuch für alle Programmiersprachen (zb Python, Perl, Ruby, Groovy)

November 20, 2008

Okay, alle ist etwas übertrieben, aber interessant ist das „Pleac Project“ allemal, was soviel heißt wie „Programming Language Examples Alike Cookbook“. Ausgehend von dem Perl Kochbuch, wurden Programmbeispiele in diverse Programmiersprachen übersetzt. Noch kann auch mitgearbeitet werden, viele Sprachen sind erst zu einem kleinen Teil fertig. Allerdings gibt es ein vollständiges Perl Kochbuch online und ein nahezu vollständiges Python Kochbuch. Am besten ihr werft selbst einen Blick drauf.

>>http://pleac.sourceforge.net/

Diese Seite gehört von nun an definitiv zu meinen Standardonlinenachschlagewerken (was für ein Wort).

h1

PHP-Funktion zum Kopieren des Verzeichnisinhalts

Juli 17, 2008

Ein komplettes Verzeichnis ist mit der in PHP implementierten Funktion copy() schnell kopiert. Wer aber häufig mit Verzeichnissen arbeitet wird vielleicht auf ein Problem stoßen: Man will nur den Inhalt eines Verzeichnisses kopieren, nicht aber das Verzeichnis selbst!

Ich habe dieses Problem mit der in PHP implementierten Klasse dir gelöst, die Funktion muss aufgrund der Unterverzeichnisse natürlich rekursiv arbeiten!

<?php
function copy_base($source, $target)
{
    if (is_dir($source )) 
        #prüfen, ob es sich um ein verzeichnis handelt
    {
        @mkdir($target); 
                # Zielverzeichnis erstellen, falls es nicht existiert

        $d = dir($source); 
                # Verzeichnis in die php-klasse dir einlesen
        #(die “dir-Klassse” ist eine in php-vorinstallierte Klasse, 
        #welche nicht importiert werden muss ACHTUNG nur in PHP 5)

        while (FALSE !== ($entry = $d->read())) 
                # Schleife zum einlesen der einzelnen Dateien
        {
            if ($entry == '.' || $entry == '..') 
                        #überspringen der Einträge . und .. 
            {
                continue;
            }

            $Entry = $source . '/' . $entry; 
                        # Jede eingelesene Datei 
            #wird mit vollständigem Pfad in $Entry gespeichert
            
                        if (is_dir($Entry)) 
                        # prüfen, ob eine Datei ein Verzeichnis ist
            {
                copy_base($Entry, $target . '/' . $entry); 
                # falls ja, 
                #rekursiver Funktionsaufruf zum Einlesen der
                #Dateien im Unterverzeichnis, danach fortfahren
                continue;
            }
            copy($Entry, $target . '/' . $entry); 
                        # Alle eingelesenen Dateien kopieren
        }

        $d->close(); 
                #mit php-klasse dir dasVerzeichnis schließen veralssen
    }
    else
    {
        copy($source, $target); 
                # Datei kopieren 
        #falls es sich bei source nicht um ein Verzeichnis handelt
    }
}
?>

Ich habe die Funktion mit Kommentaren versehen, um deren Arbeitsweise zu erklären.

Bei Rückfragen einfach die Kommentarfunktion nutzen.

Hier nochmal ein Bild in Ordentlicher Form, weil man ohne Einrückung leider nicht so viel erkennt ;-)!

h1

.htaccess wird ignoriert

Juni 28, 2008

Heute hatte ich ein Problem, bei dem in der .htaccess u.a. die Zeile:

php_value include_path „.:./app:./lib:/usr/share/php“

völlig ignoriert wurde.

Behoben habe ich das Problem, indem ich in der Datei /etc/apache2/httpd.conf den Eintrag

AllowOverride None

zu

AllowOverride All

geändert habe, was bewirkt das Umgebungsvariablen und Einstellungen von der .htaccess verändert werden können.