Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort
Vorwort
1 PEAR – Einführung
2 Authentication
3 Caching
4 Date and Time
5 File Formats
6 HTTP
7 Internationalization
8 Mail
9 Networking
10 PHP
11 Text
12 Web Services
13 Benchmarking
14 Configuration
15 Database
16 File System
17 HTML
18 Images
19 Logging
20 Math
21 Numbers
22 Tools and Utilities
23 XML
24 Selbst Pakete erstellen
25 PECL
Index
Ihre Meinung?

Spacer
 <<   zurück
PHP PEAR von Carsten Möhrke
Anwendung und Entwicklung – Erweiterungen für PHP schreiben
Buch: PHP PEAR

PHP PEAR
798 S., 39,90 Euro
Rheinwerk Computing
ISBN 3-89842-580-0
gp 10 PHP
  gp 10.1 PHP_Beautifier
  gp 10.2 PHP_CompatInfo
  gp 10.3 PHP_Compat
  gp 10.4 Validate

10 PHP

In der Kategorie PHP finden Sie einige Klassen, die den Umgang bzw. die Arbeit mit PHP deutlich vereinfachen können.


Rheinwerk Computing

10.1 PHP_Beautifier  toptop


Besprochene Version: 0.1.1 Lizenz: PHP-Lizenz 3.0
Klassendatei(en): PHP/Beautifier.php

Das Paket PHP_Beautifier sieht Funktionalitäten, vor die es Ihnen ermöglichen, eine PHP-Datei automatisch korrekt formatieren zu lassen. Angenehm ist hierbei, dass Sie recht gute Konfigurationsmöglichkeiten haben, um die resultierende Formatierung zu beeinflussen. Möchten Sie mit dem Paket arbeiten, sollten Sie die Dokumentation auf der externen Homepage der PEAR-internen vorziehen. Die externe Homepage finden Sie unter http://clbustos.dot geek.org.

Das Paket ist schon komplett auf die PHP 5-Syntax umgestellt. Insbesondere ist hiervon auch die Fehlerbehandlung betroffen, die in diesem Fall auf Exceptions basiert. Des Weiteren handelt es sich um ein reines Kommandozeilen-Tool. Eine Nutzung des Pakets über den Browser ist zurzeit nicht vorgesehen.

Nach der Installation können Sie direkt Daten umformatieren, ohne dass Sie programmieren müssen. Standardmäßig wird nämlich eine Batch-Datei bzw. ein Shell-Script installiert, das es Ihnen ermöglicht, Dateien automatisch umformatieren zu lassen.

Sie können beide Varianten in der Shell über den Befehl php_beautifier aufrufen. Um das Verhalten des Programms zu steuern, sind die Kommandozeilenoptionen aus Tabelle 10.1 definiert.


Tabelle 10.1 Kommandozeilenoptionen
Kurzform Langform Bedeutung
-f --input Name der Quell-Datei(en), Platzhalter sind zulässig.
-o --output Name der Ausgabe-Datei
-c --compress Definiert, ob die Ausgabe komprimiert werden soll. Mögliche Werte sind 'tz' oder 'bz2'.
-t --indent_tabs Einrücken mit Tabulatorsprüngen; -t2 heißt, dass 2 Tabulatorsprünge genutzt werden sollen.
-s --indent_spaces Einrücken mit Leerzeichen; -s3 heißt, dass 3 Leerzeichen genutzt werden sollen.
-l --filters Filter, die genutzt werden sollen
-d --directory_filters Verzeichnis, in dem die Filter liegen
-r --recursive Legt fest, dass untergeordnete Verzeichnisse durchsucht werden sollen.
-? --help Ausgabe der Hilfe

Der Aufruf

php_beautifier –f "*.php" –o ./beautified/ -r

würde alle Dateien mit der Endung .php aus dem aktuellen Verzeichnis und allen untergeordneten Verzeichnissen verschönern und im Verzeichnis ./beautified/ abspeichern. Für einen Aufruf unter Windows müssten allerdings die Anführungszeichen um das *.php entfernt werden.

Geben Sie keine Ausgabe-Datei an, werden alle Daten direkt auf dem Bildschirm ausgegeben. Nutzen Sie einen Dateinamen für die Ausgabe und kein Verzeichnis, werden alle Dateien, die eingelesen wurden, in dieser einen Ausgabe zusammengefasst.

Mit -l bzw. --filters können verschiedene Filter definiert werden, die die Formatierung der Ausgabe bestimmen. Die Namen der Filter bzw. der Name des Filters wird in Anführungszeichen angegeben. Nach dem Namen folgt jeweils ein Klammerpaar, mit dem eventuell notwendige Optionen übergeben werden können. Mit -l "Pear() ArrayNested()" würden die beiden Filter Pear und ArrayNested genutzt.

Zurzeit sind die Filter Pear, ArrayNested, IndentStyles und ListClassFunction definiert.

Der Filter Pear definiert, dass eine Formatierung nach Pear-Coding-Standard vorgenommen werden soll. Interessant ist, dass dieser Filter automatisch einen Lizenz-Hinweis in den Kopf der Datei einfügen kann. Hierzu übergeben Sie dem Filter das Attribut add_header, gefolgt von einem Gleichheitszeichen und dem Namen der entsprechenden Lizenz. Zurzeit sind php, bsd, apache und lgpl mögliche Werte. Ein Aufruf könnte also beispielsweise um -l "Pear(add_header=apache)" ergänzt werden, um eine Formatierung nach PEAR-Standard durchzuführen, wobei automatisch die Apache-Lizenz eingefügt wird.

Der Filter ArrayNested unterstützt keine Parameter und dient dazu, die Formatierung von verschachtelten Arrays zu steuern. Eine Zeile wie

$daten=array(array(1,2),"A"=>array(3,4, array(9,8)));

würde normalerweise nicht umbrochen. Bei Nutzung dieses Filters würde sich folgende Darstellung ergeben:

$daten = array( 
    array( 
        1, 
        2 
    ) , 
    "A"=>array( 
        3, 
        4, 
        array( 
            9, 
            8 
        ) 
    ) 
);

Mit dem Filter IndentStyles können Sie festlegen, wie die geschweiften Klammern gesetzt werden sollen. Er bekommt einen Parameter übergeben, der das Styling definiert. Mit -l "IndentStyles(style=kr)" würde die Formatierung nach Kerningham & Ritchie gewählt, die folgendermaßen aussieht:

if (/*Bedingung*/){ 
   //Code 
   }

Weitere Möglichkeiten sind bsd:

if (/*Bedingung*/) 
{ 
   //Code 
}

der Whitesmith-Stil (ws) :

if (/*Bedingung*/) 
   { 
   //Code 
   }

und gnu für den GNU-Stil:

if (/*Bedingung*/) 
  { 
    //Code 
  }

Der Filter ListClassFunction dient dazu, eine Liste der enthaltenen Klassen und Funktionen im Kopf der Datei einzufügen. Eine solche Liste sieht beispielsweise so aus:

/* 
* Class and Function List: 
* Function list: 
* - __construct() 
* - login_function() 
* Classes list: 
* - DbConnection 
*/

Die Information, ob es sich um echte Funktionen oder Methoden einer Klasse handelt, geht hierbei leider verloren. Auch Parameter oder Schlüsselwörter wie private oder public werden nicht mit übernommen. Per Vorgabe wird eine Liste der Klassen und Funktionen erzeugt. Möchten Sie eine der Ausgaben unterdrücken, können Sie dem Parameter list_functions oder dem Parameter list_classes die Zahl Null übergeben.

Auf Basis dieses Pakets können Sie auch schnell einen eigenen Beautifier erstellen. Ein solches Script für die Nutzung in der Kommandozeile könnte aussehen wie in Listing 10.1.

#!/usr/bin/php 
<?php 
require_once('PHP/Beautifier.php'); 
try 
{ 
   // Objekt ableiten 
   $Beauty = new PHP_Beautifier(); 
   // Eingabedatei festlegen 
   $Beauty->setInputFile('quelle.php'); 
   // Ausgabedatei festlegen 
   $Beauty->setOutputFile('ausgabe.php'); 
 
   // Einrueckungszeichen definieren 
   $Beauty->setIndentChar(' '); 
   // Weite der Einrueckung festlegen 
   $Beauty->setIndentNumber(4); 
   // Zeilenumbruch festlegen 
   $Beauty->setNewLine("\n"); 
 
   // Filter ArrayNested hinzufuegen 
   $Beauty->addFilter('ArrayNested'); 
   // Filter PEAR mit php-Lizenz hinzufuegen 
   $Beauty->addFilter('Pear',array('add_header'=>'php')); 
 
   // Datei abarbeiten 
   $Beauty->process(); 
   // Daten auf dem Bildschirm ausgeben 
   $Beauty->show(); 
   // Datei speichern 
   $Beauty->save(); 
} 
catch (Exception $err) 
{ 
   echo $err; 
} 
?>

Listing 10.1 Selbst erstellter Beautifier

Ich denke, die meisten Methoden sind hier selbsterklärend, da sie weitgehend identisch mit den Kommandozeilenparametern sind. Interessant ist noch die Methode setNewLine(), mit der Sie festlegen können, welches Zeichen genutzt werden soll, um einen Zeilenumbruch in der Quelldatei darzustellen.

Der Aufruf von process() ist zwingend erforderlich, um die eigentliche Transformation durchzuführen. Danach können Sie entscheiden, was mit dem Ergebnis passieren soll. show() gibt das Ergebnis direkt auf dem Bildschirm aus, wohingegen save() das Ergebnis als Datei, in diesem Beispiel unter dem Namen ausgabe.php, abspeichert.

Möchten Sie die Ausgabe automatisch komprimieren lassen, ist die Methode setCompress() dafür vorgesehen. Sie akzeptiert die Parameter 'Tar', 'Gz' oder 'Bz2' und schaltet damit den entsprechenden Kompressionsalgorithmus zu.

 <<   zurück
     
  Zum Katalog
Zum Katalog: PHP PEAR
PHP PEAR
Jetzt bestellen!
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: PHP 5.6 und MySQL 5.7






 PHP 5.6 und
 MySQL 5.7


Zum Katalog: Einstieg in PHP 5.6 und MySQL 5.6






 Einstieg in PHP 5.6
 und MySQL 5.6


Zum Katalog: Responsive Webdesign






 Responsive Webdesign


Zum Katalog: Moderne Websites entwickeln






 Moderne Websites
 entwickeln


Zum Katalog: MySQL 5.6






 MySQL 5.6


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo








Copyright © Rheinwerk Verlag GmbH 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de