Compression API: Unterschied zwischen den Versionen
Aus Contao Community Documentation
Tril (Diskussion | Beiträge) (→Komprimierungsverfahren) |
Tril (Diskussion | Beiträge) (→Minimierungsverfahren) |
||
(14 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | |||
[[Category:Dev_HOWTOS]] | [[Category:Dev_HOWTOS]] | ||
[[Category:Development]] | [[Category:Development]] | ||
[[Category:Extensions]] | [[Category:Extensions]] | ||
− | Die '''Compression API''' ist eine Komprimierungs und Minimierungs API für Entwickler. | + | Die '''Compression API''' ist eine Komprimierungs- und Minimierungs-API für Entwickler. |
{{AppliesTo | {{AppliesTo | ||
|Version=2.9.x}} | |Version=2.9.x}} | ||
=Compression API= | =Compression API= | ||
− | + | Das Ziel der Compression API ist es, eine einheitliche Schnittstelle zu liefern, um Entwicklern von Erweiterungen und Templates einen vereinfachten Zugriff auf verschiedene Komprimierungs- und Minimierungsverfahren zu geben. | |
− | == | + | ==Die API== |
− | + | Die API selbst besteht aus folgenden Basisklassen. | |
− | + | ||
− | + | ||
− | + | {{Anmerkung|Der folgende Quellcode ist kein korrekter PHP Code. Es handelt sich um Pseudo Code, um den Aufbau der Klassen und ihrer Funktionen zu verdeutlichen.}} | |
− | === | + | ===class Compression=== |
− | + | Die Basisklasse, welche zentraler Zugriffspunkt für den Entwickler ist und im Idealfall die einzige, die explizit angesprochen wird. | |
− | = | + | <source lang="php"> |
+ | class Compression | ||
+ | { | ||
+ | /** | ||
+ | * Gibt alle verfügbaren Kompressoren zurück. | ||
+ | */ | ||
+ | array getCompressors() | ||
− | + | /** | |
+ | * Gibt die Klasse des Kompressors zurück. | ||
+ | */ | ||
+ | string getCompressorClass($strKey) | ||
− | ===={ | + | /** |
+ | * Gibt den in den Systemeinstellungen vorausgewählten Kompressor zurück. | ||
+ | */ | ||
+ | string getDefaultCompressor() | ||
+ | |||
+ | /** | ||
+ | * Gibt die Klasse des in den Systemeinstellungen vorausgewählten Kompressor zurück | ||
+ | */ | ||
+ | string getDefaultCompressorClass() | ||
+ | |||
+ | /** | ||
+ | * Gibt alle verfügbaren JavaScript Minimizer zurück. | ||
+ | */ | ||
+ | aray getJsMinimizers() | ||
+ | |||
+ | /** | ||
+ | * Gibt die Klasse des JavaScript Minimizer zurück. | ||
+ | */ | ||
+ | string getJsMinimizerClass($strKey) | ||
+ | |||
+ | /** | ||
+ | * Gibt den in den Systemeinstellungen vorausgewählten JavaScript Minimizer zurück. | ||
+ | */ | ||
+ | string getDefaultJsMinimizer() | ||
+ | |||
+ | /** | ||
+ | * Gibt die Klasse des in den Systemeinstellungen vorausgewählten JavaScript Minimizer zurück | ||
+ | */ | ||
+ | string getDefaultJsMinimizerClass() | ||
+ | |||
+ | /** | ||
+ | * Gibt alle verfügbaren CSS Minimizer zurück. | ||
+ | */ | ||
+ | aray getCssMinimizers() | ||
+ | |||
+ | /** | ||
+ | * Gibt die Klasse des CSS Minimizer zurück. | ||
+ | */ | ||
+ | string getCssMinimizerClass($strKey) | ||
+ | |||
+ | /** | ||
+ | * Gibt den in den Systemeinstellungen vorausgewählten CSS Minimizer zurück. | ||
+ | */ | ||
+ | string getDefaultCssMinimizer() | ||
+ | |||
+ | /** | ||
+ | * Gibt die Klasse des in den Systemeinstellungen vorausgewählten CSS Minimizer zurück | ||
+ | */ | ||
+ | string getDefaultCssMinimizerClass() | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | ===interface Compressor=== | ||
+ | |||
+ | Das <code>Compressor</code> Interface ist die einheitliche Schnittstelle zu allen Komprimierungsverfahren. Jeder Kompressor implementiert dieses Interface und kann so einheitlich benutzt werden. | ||
+ | |||
+ | <source lang="php"> | ||
+ | interface Compressor | ||
+ | { | ||
+ | /** | ||
+ | * Konfiguriert den Kompressor. | ||
+ | */ | ||
+ | void configure($arrConfig) | ||
+ | |||
+ | /** | ||
+ | * Gibt die aktuelle Kompressor Konfiguration zurück. | ||
+ | */ | ||
+ | array getConfig() | ||
+ | |||
+ | /** | ||
+ | * Komprimiert die Datei $strSource und schreibt die komprimierten Daten in die Datei $strTarget. | ||
+ | */ | ||
+ | bool compress($strSource, $strTarget) | ||
+ | |||
+ | /** | ||
+ | * Komprimiert die Datei $strSource und gibt die komprimierten Daten zurück. | ||
+ | * Im Fehlerfall wird false zurück gegeben. | ||
+ | */ | ||
+ | mixed compressFromFile($strSource) | ||
+ | |||
+ | /** | ||
+ | * Komprimiert die Daten $varData und schreibt diese in die Datei $strFile. | ||
+ | */ | ||
+ | bool compressToFile($strFile, $varData) | ||
+ | |||
+ | /** | ||
+ | * Komprimiert die Daten $varData und gibt diese zurück. | ||
+ | * Im Fehlerfall wird false zurück gegeben. | ||
+ | */ | ||
+ | mixed compressData($varData) | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | ===interface Minimizer=== | ||
+ | |||
+ | Das <code>Minimizer</code> Interface ist die einheitliche Schnittstelle zu allen Minimierungsverfahren für CSS und JavaScript Code. Jeder Minimizer implementiert dieses Interface und kann so einheitlich benutzt werden. | ||
+ | |||
+ | <source lang="php"> | ||
+ | interface Minimizer | ||
+ | { | ||
+ | /** | ||
+ | * Konfiguriert den Kompressor. | ||
+ | */ | ||
+ | void configure($arrConfig) | ||
+ | |||
+ | /** | ||
+ | * Gibt die aktuelle Kompressor Konfiguration zurück. | ||
+ | */ | ||
+ | array getConfig() | ||
+ | |||
+ | /** | ||
+ | * Minimiert die Datei $strSource und schreibt den minimierten Code in die Datei $strTarget. | ||
+ | */ | ||
+ | bool minimize($strSource, $strTarget) | ||
+ | |||
+ | /** | ||
+ | * Minimiert die Datei $strSource und gibt die minimierten Daten zurück. | ||
+ | * Im Fehlerfall wird false zurück gegeben. | ||
+ | */ | ||
+ | mixed minimizeFromFile($strSource) | ||
+ | |||
+ | /** | ||
+ | * Minimiert den Code $strCode und schreibt diesen in die Datei $strFile. | ||
+ | */ | ||
+ | bool minimizeToFile($strFile, $varData) | ||
+ | |||
+ | /** | ||
+ | * Minimiert den Code $strCode und gibt diesen zurück. | ||
+ | * Im Fehlerfall wird false zurück gegeben. | ||
+ | */ | ||
+ | mixed minimizeCode($strCode) | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | ==Unterstützte Verfahren== | ||
+ | |||
+ | ===Komprimierungsverfahren=== | ||
+ | |||
+ | * gzip - GzipCompressor (buildin) | ||
+ | * bzip2 - Bzip2Compressor (buildin) | ||
+ | * ''lzma - LzmaCompressor (geplant)'' | ||
+ | |||
+ | ===Minimierungsverfahren=== | ||
− | + | * yui - YUI Compressor (über Paket [http://www.contao.org/erweiterungsliste/view/yui-compressor.html yui-compressor]) | |
+ | * cssmin - cssMinimizer (über Paket [http://www.contao.org/erweiterungsliste/view/cssMinimizer.20000008.de.html cssMinimizer]) | ||
+ | * jsmin - jsMinimizer (über Paket [http://www.contao.org/erweiterungsliste/view/jsMinimizer.html jsMinimizer]) | ||
+ | * dep - Dean Edwards Packer (über Paket [http://www.contao.org/erweiterungsliste/view/DeanEdwardsPacker.html DeanEdwardsPacker]) | ||
− | == | + | ==Beispielcode== |
− | + | ===Datei komprimieren mit Bzip2=== | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | == | + | <source lang="php"> |
+ | class MyExtension extends Controller | ||
+ | { | ||
+ | protected $strCompressionMethod = 'bzip2'; | ||
− | = | + | public function compress($strFile, $strFileBzip2) |
+ | { | ||
+ | $this->import('Compression'); | ||
+ | $strClass = $this->Compression->getCompressorClass($this->strCompressionMethod); | ||
+ | $this->import($strClass, 'Compressor'); | ||
+ | return $this->Compressor->compress($strFile, $strFileBzip2); | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
− | + | ===CSS Code minimieren=== | |
− | + | ||
− | + | ||
− | + | ||
− | == | + | <source lang="php"> |
+ | class MyExtension extends Controller | ||
+ | { | ||
+ | protected $strMinimisationMethod = 'yui'; | ||
− | + | public function minimize($strFile, $strCssCode) | |
− | + | { | |
− | + | $this->import('Compression'); | |
− | + | $strClass = $this->Compression->getCssMinimizerClass($this->strMinimisationMethod); | |
+ | $this->import($strClass, 'CssMinimizer'); | ||
+ | return $this->CssMinimizer->minimizeToFile($strFile, $strCssCode); | ||
+ | } | ||
+ | } | ||
+ | </source> |
Aktuelle Version vom 8. Mai 2011, 17:38 Uhr
Die Compression API ist eine Komprimierungs- und Minimierungs-API für Entwickler.
betrifft | |
---|---|
Contao Version | 2.9.x |
Inhaltsverzeichnis
Compression API
Das Ziel der Compression API ist es, eine einheitliche Schnittstelle zu liefern, um Entwicklern von Erweiterungen und Templates einen vereinfachten Zugriff auf verschiedene Komprimierungs- und Minimierungsverfahren zu geben.
Die API
Die API selbst besteht aus folgenden Basisklassen.
Anmerkung: Der folgende Quellcode ist kein korrekter PHP Code. Es handelt sich um Pseudo Code, um den Aufbau der Klassen und ihrer Funktionen zu verdeutlichen. |
class Compression
Die Basisklasse, welche zentraler Zugriffspunkt für den Entwickler ist und im Idealfall die einzige, die explizit angesprochen wird.
class Compression { /** * Gibt alle verfügbaren Kompressoren zurück. */ array getCompressors() /** * Gibt die Klasse des Kompressors zurück. */ string getCompressorClass($strKey) /** * Gibt den in den Systemeinstellungen vorausgewählten Kompressor zurück. */ string getDefaultCompressor() /** * Gibt die Klasse des in den Systemeinstellungen vorausgewählten Kompressor zurück */ string getDefaultCompressorClass() /** * Gibt alle verfügbaren JavaScript Minimizer zurück. */ aray getJsMinimizers() /** * Gibt die Klasse des JavaScript Minimizer zurück. */ string getJsMinimizerClass($strKey) /** * Gibt den in den Systemeinstellungen vorausgewählten JavaScript Minimizer zurück. */ string getDefaultJsMinimizer() /** * Gibt die Klasse des in den Systemeinstellungen vorausgewählten JavaScript Minimizer zurück */ string getDefaultJsMinimizerClass() /** * Gibt alle verfügbaren CSS Minimizer zurück. */ aray getCssMinimizers() /** * Gibt die Klasse des CSS Minimizer zurück. */ string getCssMinimizerClass($strKey) /** * Gibt den in den Systemeinstellungen vorausgewählten CSS Minimizer zurück. */ string getDefaultCssMinimizer() /** * Gibt die Klasse des in den Systemeinstellungen vorausgewählten CSS Minimizer zurück */ string getDefaultCssMinimizerClass() }
interface Compressor
Das Compressor
Interface ist die einheitliche Schnittstelle zu allen Komprimierungsverfahren. Jeder Kompressor implementiert dieses Interface und kann so einheitlich benutzt werden.
interface Compressor { /** * Konfiguriert den Kompressor. */ void configure($arrConfig) /** * Gibt die aktuelle Kompressor Konfiguration zurück. */ array getConfig() /** * Komprimiert die Datei $strSource und schreibt die komprimierten Daten in die Datei $strTarget. */ bool compress($strSource, $strTarget) /** * Komprimiert die Datei $strSource und gibt die komprimierten Daten zurück. * Im Fehlerfall wird false zurück gegeben. */ mixed compressFromFile($strSource) /** * Komprimiert die Daten $varData und schreibt diese in die Datei $strFile. */ bool compressToFile($strFile, $varData) /** * Komprimiert die Daten $varData und gibt diese zurück. * Im Fehlerfall wird false zurück gegeben. */ mixed compressData($varData) }
interface Minimizer
Das Minimizer
Interface ist die einheitliche Schnittstelle zu allen Minimierungsverfahren für CSS und JavaScript Code. Jeder Minimizer implementiert dieses Interface und kann so einheitlich benutzt werden.
interface Minimizer { /** * Konfiguriert den Kompressor. */ void configure($arrConfig) /** * Gibt die aktuelle Kompressor Konfiguration zurück. */ array getConfig() /** * Minimiert die Datei $strSource und schreibt den minimierten Code in die Datei $strTarget. */ bool minimize($strSource, $strTarget) /** * Minimiert die Datei $strSource und gibt die minimierten Daten zurück. * Im Fehlerfall wird false zurück gegeben. */ mixed minimizeFromFile($strSource) /** * Minimiert den Code $strCode und schreibt diesen in die Datei $strFile. */ bool minimizeToFile($strFile, $varData) /** * Minimiert den Code $strCode und gibt diesen zurück. * Im Fehlerfall wird false zurück gegeben. */ mixed minimizeCode($strCode) }
Unterstützte Verfahren
Komprimierungsverfahren
- gzip - GzipCompressor (buildin)
- bzip2 - Bzip2Compressor (buildin)
- lzma - LzmaCompressor (geplant)
Minimierungsverfahren
- yui - YUI Compressor (über Paket yui-compressor)
- cssmin - cssMinimizer (über Paket cssMinimizer)
- jsmin - jsMinimizer (über Paket jsMinimizer)
- dep - Dean Edwards Packer (über Paket DeanEdwardsPacker)
Beispielcode
Datei komprimieren mit Bzip2
class MyExtension extends Controller { protected $strCompressionMethod = 'bzip2'; public function compress($strFile, $strFileBzip2) { $this->import('Compression'); $strClass = $this->Compression->getCompressorClass($this->strCompressionMethod); $this->import($strClass, 'Compressor'); return $this->Compressor->compress($strFile, $strFileBzip2); } }
CSS Code minimieren
class MyExtension extends Controller { protected $strMinimisationMethod = 'yui'; public function minimize($strFile, $strCssCode) { $this->import('Compression'); $strClass = $this->Compression->getCssMinimizerClass($this->strMinimisationMethod); $this->import($strClass, 'CssMinimizer'); return $this->CssMinimizer->minimizeToFile($strFile, $strCssCode); } }