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


Rheinwerk Computing

10.2 PHP_CompatInfo  toptop


Besprochene Version: 1.0.0RC3 Lizenz: PHP-Lizenz 2.02
Klassendatei(en): PHP/CompatInfo.php; PHP/CompatInfo/Cli.php

Den Paketen PHP_CompatInfo und PHP_Compat liegt eine sehr schöne Idee zu Grunde. Diese Pakete versuchen, Problemen vorzubeugen, die auftreten können, wenn PHP-Scripts nicht kompatibel mit der PHP-Version sind, die auf einem Server genutzt wird.

PHP_CompatInfo ist hierbei in der Lage, ein Script zu analysieren und festzustellen, welche PHP-Version benötigt wird, um das Script auszuführen.

Das Paket kann Daten aus einem String, einer Datei oder aus mehreren Dateien (sprich einem Unterverzeichnis) analysieren.

<?php 
require_once ('PHP/CompatInfo.php'); 
// Neues Objekt ableiten 
$info = new PHP_CompatInfo; 
// Dateinamen setzen 
$datei = 'quelle.php'; 
// Datei einlesen und analysieren 
$erg = $info->parseFile($datei); 
?>

Listing 10.2 Analyse einer Datei

Die in Listing 10.2 ermittelten Daten werden in $erg in Form eines Arrays abgelegt. Der Aufbau könnte beispielsweise so aussehen:

array(3) { 
  ["version"]=> 
  string(5) "4.0.0" 
  ["extensions"]=> 
  array(5) { 
    [0]=> 
    string(5) "mysql" 
    [1]=> 
    string(5) "mysql" 
    [2]=> 
    string(3) "pdf" 
    [3]=> 
    string(5) "mysql" 
    [4]=> 
    string(5) "mysql" 
  } 
  ["constants"]=> 
  array(1) { 
    [0]=> 
    string(8) "__FILE__" 
  } 
}

Der Schlüssel version verweist auf die PHP-Version, die mindestens erforderlich ist, um den Code auszuführen. Der Schlüssel extensions verweist auf ein Array, das Informationen darüber enthält, welche Erweiterungen verfügbar sein müssen, damit der Code ausgeführt werden kann. In diesem Fall taucht mysql mehrfach auf, weil mehrere mysql-Befehle in der analysierten Datei zu finden sind. Bei längeren Programmen ist es an dieser Stelle sicher sinnvoll, das Array mit array_unique() zu bearbeiten, um doppelte Einträge zu verhindern.

Der letzte Schlüssel, constants, enthält ein indiziertes Array, in dem alle System-Konstanten aufgelistet sind, die das Script nutzt.

Möchten Sie keine Datei, sondern einen String parsen, steht parseString() zur Verfügung. Der Methode können Sie als zweiten Parameter ein Array übergeben, das den Schlüssel 'ignore_functions' unterstützt. Dieser kann auf ein indiziertes Array mit Funktionsnamen verweisen, die bei der Analyse ignoriert werden sollen.

Um mehrere Strings oder Arrays auf einmal zu durchforsten, ist die Methode parseArray() deklariert, die ein Array mit den Dateinamen bzw. Strings übergeben bekommt. Handelt es sich um ein Array, das aus Strings besteht, müssen Sie als zweiten Parameter noch ein Array übergeben. Dieses Array muss den Schlüssel 'is_string' enthalten, der true enthalten muss. Darüber hinaus wird auch 'ignore_functions' unterstützt.

Die letzte Möglichkeit, Dateien zu analysieren, ist parseDir(). Sie bekommt den Pfad eines Verzeichnisses übergeben, in dem alle Dateien betrachtet werden. Auch diese Methode kann einen zweiten Parameter in Form eines Arrays verarbeiten. Dieses Array unterstützt neben 'ignore_functions' auch die Schlüssel 'file_ext', 'recurse_dir', 'ignore_files' und 'ignore_dirs'. Mit dem ersten können Sie ein Array mit Dateinamenserweiterungen übergeben, um die zu erfassenden Dateien festzulegen. In der Standardeinstellung werden Dateien mit den Endungen .php, .php4, .inc und .phtml erfasst. Übergeben Sie mit 'recurse_dir' ein false, werden untergeordnete Verzeichnisse nicht durchsucht, was standardmäßig gemacht wird. Die letzten beiden Schlüssel können jeweils auf ein Array verweisen, in dem Sie die Namen von Dateien bzw. Verzeichnissen übergeben können, die ignoriert werden sollen.

Diese Methode liefert, genau wie parseArray(), ein etwas umfangreicheres Array zurück. Hier ist der Anfang des Arrays so aufgebaut, wie oben beschrieben wurde. In diesem ersten Teil wird der kleinste gemeinsame Nenner beschrieben, den alle Dateien benötigen. Danach folgt für jede Datei noch ein zusätzlicher Eintrag, in dem sich ein verschachteltes Array befindet, in dem die Spezifikationen für diese einzelne Datei enthalten sind.

Die beschriebenen Methoden sind auch noch mal in der Klasse PHP_CompatInfo_Cli enthalten, die in der Datei PHP/CompatInfo/Cli.php definiert ist. Der Sinn dieser Klasse ist es, ein möglichst einfaches Interface für den Einsatz der Klasse auf der Kommandozeile bereitzustellen. Zum einen stehen hier die schon beschriebenen Methoden zur Verfügung. Darüber hinaus verarbeitet der Konstruktor aber auch direkt Kommandozeilenoptionen. Ein solches Script kann aussehen wie in Listing 10.3.

#!/usr/bin/php 
<?php 
require_once 'PHP/CompatInfo/Cli.php'; 
$info = new PHP_CompatInfo_Cli; 
$info->run() 
?>

Listing 10.3 Analyse eines Scripts über die Kommandozeile

Der Name der zu analysierenden Datei kann mit --file=dateiname oder -f übergeben werden. Mit --dir=Verzeichnis oder -d können Sie ein Verzeichnis spezifizieren, das die gewünschten Dateien enthält, und mit --recurse bzw. -n können Sie verhindern, dass darunter liegende Verzeichnisse durchsucht werden. Die Methode run(), die hier genutzt wurde, generiert direkt eine Bildschirmausgabe.

 <<   zurück
     
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: PHP PEAR
PHP PEAR
Jetzt Buch bestellen!
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: PHP 5.6 und MySQL 5.7






 PHP 5.6 und
 MySQL 5.7


Zum Rheinwerk-Shop: Einstieg in PHP 5.6 und MySQL 5.6






 Einstieg in PHP 5.6
 und MySQL 5.6


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Moderne Websites entwickeln






 Moderne Websites
 entwickeln


Zum Rheinwerk-Shop: MySQL 5.6






 MySQL 5.6


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
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.


Nutzungsbestimmungen | Datenschutz | Impressum

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

Cookie-Einstellungen ändern