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 25 PECL
  gp 25.1 Allgemeines
  gp 25.2 Installation
  gp 25.3 crack
  gp 25.4 apd
  gp 25.5 bcompiler
  gp 25.6 perl
  gp 25.7 Xdebug
  gp 25.8 APC
  gp 25.9 IDN
  gp 25.10 blenc
  gp 25.11 xmlreader
  gp 25.12 xmlwriter
  gp 25.13 id3


Rheinwerk Computing

25.5 bcompiler  toptop


Besprochene Version: 0.6 Lizenz: PHP-Lizenz 2.02

bcompiler ist eine sehr interessante Erweiterung. Dieser Bytecode-Compiler ist in der Lage, PHP-Code in einen so genannten Bytecode zu übersetzen. Dieser Bytecode ist eine Art Zwischenstadium. Das heißt, es handelt sich nicht mehr um PHP, aber auch noch nicht um reinen Maschinencode. Dieser Code leistet exakt dasselbe wie der ursprüngliche PHP-Code, kann aber nicht mehr ohne Probleme entziffert werden. Das hat den Vorteil, dass niemand mehr Ihre Algorithmen entschlüsseln oder Ihren Code verändern kann. Das ist beispielsweise dann sehr hilfreich, wenn Sie Ihre Programme verkaufen und sichergehen wollen, dass niemand Veränderungen daran vornimmt. Ein anderer Anwendungsfall wäre, dass Sie eventuell eine Testversion eines Programms erstellen wollen, das beispielsweise nur 30 Tage laufen soll. Auch in dem Fall können Sie die Routine zur Zeitmessung im Code belassen, ohne Gefahr zu laufen, dass sie entfernt wird.

Bitte beachten Sie dabei, dass ein solcher Code nicht verschlüsselt ist. Das heißt, dass Funktionsnamen, String-Literale oder Namen von Konstanten im Bytecode nach wie vor zu lesen sind. Daher sollten sicherheitsrelevante Informationen hier nie im Klartext enthalten sein.

Die Nutzung gestaltet sich recht einfach. Nachdem Sie den PHP-Code fertig erstellt haben, können Sie ihn mithilfe von bcompiler übersetzen. Dazu öffnen Sie erst eine neue Datei, in der der Bytecode abgelegt werden soll. Das Datei-Handle, das Sie von fopen() zurückgegeben bekommen, wird dann an die Funktion bcompiler_write_header() übergeben, die einen Header in die Datei schreibt, damit der Bytecode auch korrekt ausgeführt werden kann.

Danach rufen Sie die Funktion bcompiler_write_file() auf, die als ersten Parameter die Datei-Ressource übergeben bekommt. Danach folgt als zweiter Parameter der Name der Quelldatei, die übersetzt werden soll.

Zu guter Letzt rufen Sie noch die Funktion bcompiler_write_footer() auf, die die Bytecode-Datei korrekt schließt.

$fh = fopen('ziel.php', 'w'); 
if (false == $fh) 
{ 
   die ('Konnte Datei nicht anlegen'); 
} 
$res = bcompiler_write_header($fh); 
if (false == $res) 
{ 
   die ('Konnte Header nicht schreiben'); 
} 
$res = bcompiler_write_file($fh, 'quelle.php'); 
if (false == $res) 
{ 
   die ('Konnte Datei nicht kompilieren'); 
} 
$res = bcompiler_write_footer($fh); 
if (false == $res) 
{ 
   die ('Konnte Datei nicht kompilieren'); 
} 
fclose($fh);

Listing 25.6 Nutzung von bcompiler

Die Zieldatei, die geschrieben wird, können Sie nun direkt aufrufen, wobei zu beachten ist, dass auf dem Server, der diese Datei ausführen soll, bcompiler installiert sein muss.

Allerdings müssen Sie nicht immer eine ganze Datei übersetzen lassen. Es ist auch möglich, eine Klasse, eine Konstante oder eine Funktion als Bytecode abzulegen. Zum Speichern von Klassen oder Konstanten nutzen Sie die Funktionen bcompiler_write_class() bzw. bcompiler_write_constant(). Beide bekommen als ersten Parameter das File-Handle und als zweiten den Namen der Klasse bzw. der Konstante übergeben. Dabei gehen die Funktionen davon aus, dass die Daten, die gespeichert werden sollen, im aktuellen Script vorhanden sind. Handelt es sich um eine externe Datei, müssten Sie diese also erst inkludieren.

Das Gleiche gilt für die Funktion bcompiler_write_functions(), die eine Funktion auslagert. In diesem Fall gibt es aber noch zusätzlich die Funktion bcompiler_write_functions_from_file(). Sie bekommt als zweiten Parameter einen Dateinamen übergeben, der eine Datei bezeichnet, die nur Funktionen, also keinen eigenständig lauffähigen Code, enthält.

Um die so erstellten Dateien nutzen zu können, binden Sie sie einfach mit require() oder include() ein. Dabei gilt natürlich, dass der bcompiler auch zum Ausführen der Dateien auf dem Server installiert sein muss.

 <<   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