Compression API
Aus Contao Community Documentation
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 Packet yui-compressor)
- cssmin - cssMinimizer (geplant)
- jsmin - jsMinimizer (über Packet jsMinimizer)
- dep - Dean Edwards Packer (über Packet 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); } }